國(guó)家二級(jí)c語(yǔ)言上機(jī)考試分類編程題_第1頁(yè)
國(guó)家二級(jí)c語(yǔ)言上機(jī)考試分類編程題_第2頁(yè)
國(guó)家二級(jí)c語(yǔ)言上機(jī)考試分類編程題_第3頁(yè)
國(guó)家二級(jí)c語(yǔ)言上機(jī)考試分類編程題_第4頁(yè)
國(guó)家二級(jí)c語(yǔ)言上機(jī)考試分類編程題_第5頁(yè)
已閱讀5頁(yè),還剩108頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

編程題

1、

請(qǐng)編寫(xiě)函數(shù)firn,其功能是:找出IM整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。

注意:部分源程序在文件PRQGLC中。

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)ftin的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句.

#include<stdio.h>

#defineM4

intfun(inta[][MJ)

main()

{intarr[2][M]={5,8,3,45,76,-4,12,82};voidNONOQ;

printf(nmax=%d\n'\fun(arr));

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*wf;

intarr[][M]={5,8,3,90,76,-4,12,82};

wf=fbpen("out.dat","w");

fprintf(wf,umax=%d\n",fun(arr));

fclose(wf);

)

【參考答案】

intfun(inta[][M])

(

intiJ,max=a[0][0];

for(i=0;i<2;i++)

for(j=0;j<M;j++)

if(max<a[i][j])

max=a[i][j];

returnmax;

)

2、

請(qǐng)編寫(xiě)函數(shù)碗,其功能是:找出2xM整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù).

注意:部分源程序在文件PROG1.C中.

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)客,僅在函數(shù)fUn的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句.

#include<stdio.h>

#defineM4

intfun(inta[][M])

main()

{intarr[2][M]={5,8,3,45,76,-4,12,82};voidNONO();

printf(nmax=%d\n*\fun(arr));

NONO();

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*wf;

intarr[][M1={5,8,3,90,76,-4,12,82);

wf=fopen(',out.dat,,,,'wu);

fprintf(wf,,'max=%d\n",fun(arr));

fclose(wf);

)

【參考答案】

intfun(inta[][M])

{

intiJ,max=a[0][0];

for(i=0;i<2;i++)

for(j=0;j<M;j++)

if(max<a[i][j])

max=a[i][j];

returnmax;

編寫(xiě)酸firn,其功能急求出倒皿此間能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),荊騏放在新雕數(shù)

組中,通過(guò)碰回這些數(shù)的個(gè)乳

注意:部分原程臊文件PR0G1.C中.

許嫩動(dòng)主線mai/艇儆中艙何內(nèi)容,僅在由鄭in的佛號(hào)棚入你囑的若干語(yǔ)句.

#include<stdio.h>

voidfun(int*a,int*n)

main()

{intaa[1000],n,k;

voidNONO();

fun(aa,&n);

for(k=0;k<n;k++)

if((k+1)%10==0)print"。");

elseprintf(n%5d",aa[k]);

NONO();

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

intaa[10001,n,k;

FILE*fp;

fp=fopen("out.dat,,,',wn);

fun(aa,&n);

for(k=0;k<n;k++)

if((k+1)%10==0)fprintf(fp,An“);

elsefprintf(fp,n%5dn,aa(k]);

fclose(fp);

}

【參考答案】

voidfun(int*a,int*n)

(

intij=0;

for(i=l;i<=1000;i++)/*求1到1000之內(nèi)能被7或11整除、但不能同時(shí)被7和11整除的所

有整數(shù),并放入數(shù)組a中*/

if((i%7=0||i%ll=0)&&i%77!=0)

a[j++]=i;

*n=j;

}

規(guī)定輸入的字符串中只包含字母和俎編寫(xiě)函數(shù)血,其功能是:刪除字符串中所有的*號(hào).編寫(xiě)函數(shù)時(shí),不得使用保

言提供的字符串函數(shù).

例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后字符串中的內(nèi)容應(yīng)當(dāng)是:ABCDEFG.

注總部分源程、在文件PRQGLC中.

請(qǐng)勿在動(dòng)主函數(shù)血睜其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fim的花樣號(hào)中填入你編寫(xiě)的若干的語(yǔ)句.

#include<stdio.h>

voidfun(char*a)

main()

{chars[81];

voidNONO();

printf("Enterastring:\nM);gets(s);

fun(s);

printf(*Thestringafterdeleted:\n");puts(s);

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*in,*out;

inti;chars|81];

in=fopen("in.datn,',rn);

out=fopen("out.datn,nwn);

for(i=0;i<10;i++){

fscanf(in,M%sn,s);

fun(s);

fprintf(out,"%s\nn,s);

)

fclose(in);

fclose(out);

)

【參考答案】

voidfun(char*a)

(

intij=0;

for(i=0;a[i]!=,\0,;i++)

if(a[i]!=,**)

a[j++]=a[i];/*若不是要?jiǎng)h除的字符'則留下*/

a[j]=\0>;

}

編寫(xiě)函數(shù)fim,具功能息實(shí)現(xiàn)兩個(gè)字符串的連撤不要使用庫(kù)函數(shù)strcat),即把p2所指的字符串連接到pl所指的字符串的

后面。

例如,分別輸入下面兩個(gè)字符串:

FirstString—

SecondString

程序輸出;

FirstString—SecondString

注意:部分源程用在文件PRQG1,時(shí)。

諳勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fiin的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。

#include<stdio.h>

voidfun(charpl[],charp2[])

main()

{charsl[80],s2[40];voidNONO();

printf("Entersiands2:\nH);

scanf(',%s%s,',si,s2);

printf("sl=%s\n",si);

printf(',s2=%s\n",s2);

printf(Invokefun(sl,s2):\n");

fun(sl,s2);

printf(nAfterinvoking:\n");

printf(',%s\n,\si);

NONO();

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

inti;

FILE*rf,*wf;

charsl|80|,s2|40|;

rf=fopen(',in.dat";,rn);

wf=fopen("out,datn,"wn);

for(i=0;i<10;i++){

fscanf(rf,n%sn,si);

fscanf(rf,M%sM,s2);

fun(sl,s2);

fprintf(wf,H%s\nn,si);

)

fclose(rf);

fclose(wf);

)

【參考答案】

voidfun(charpl[],charp2[])

{

intij;

for(i=0;pl[i]!='\0';i++);

forG=0;p2[j]!='\0';j++)

pl[i++]=p2[j];

pl[i]='\O';

某學(xué)生的記錄由學(xué)與捫課程成績(jī)和平均分組成,學(xué)號(hào)和8門(mén)課程的成綣已在主函數(shù)中給出,謫編寫(xiě)函數(shù)ftm,其功能

懸求出該學(xué)生的平均分,并放入記錄的av威員中.

例如,學(xué)生械綣懸85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78耶.

注意:部分源程序在文件PRQGL時(shí).

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)圓部位中境入你給寫(xiě)的若干卷句.

#include<stdio.h>

#defineN8

typedefstruct

{charnum[10];

doubles[N];

doubleave;

}STREC;

voidfun(STREC*a)

)

main()

{STRECs={"GA005”,85.5,76,69.5,85,91,72,64.5,87.5};

inti;

voidNONO();

fun(&s);

printf(/zThe%s'sstudentdata:\n/z,s.num);

for(i=0;i<N;i++)

printf("%4.lf\n”,s.s[i]);

printf(z/\nave=%7.3f\n”,s.ave);

N0N0();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*out;

inti,j;STRECs[10]={

{“GA005”,85.5,76,69.5,85,91,72,64.5,87.5},

{“GA001”,82.5,66,76.5,76,89,76,46.5,78.5},

{“GA002”,72.5,56,66.5,66,79,68,46.5,58.5},

{“GA003”,92.5,76,86.5,86,99,86,56.5,88.5),

{“GA004”,82,66.5,46.5,56,76,75,76.5,63.5},

{“GA006”,75.5,74,71.5,85,81,79,64.5,71.5},

{〃GA007〃,92.5,61,72.5,84,79,75,66.5,72.5},

{〃GA008〃,72.5,86,73.5,80,69,63,76.5,53.5},

{〃GA009〃,66.5,71,74.5,70,61,82,86.5,58.5},

{〃GA010〃,76,66.5,75.5,60,76,71,96.5,93.5},

);

out=fopen(〃out.dat〃,〃w〃);

for(i=0;i<10;i++){

fun(&s[i]);

fprintf(out,〃%7.3f\n〃,s[i].ave);

)

fclose(out);

)

【參考答案】

oidfun(STREC*a)

(

doubleave=0.0;

inti;

for(i=0;i<N;i++)

a->ave=a->ave+a->s[i];

/*求各門(mén)成績(jī)的總和*/

a->ave/=N;

/*求平均分*/

N名學(xué)生的成績(jī)已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,城旨向鏈表的頭節(jié)點(diǎn).話編與必?cái)?shù)面,其功能是:求出

平均分,并由函數(shù)值返回。

例如,若學(xué)生的成績(jī)是:8576698591726487,則平均分應(yīng)當(dāng)是,78.625.

注意:部分源程用在文件PR0GLC中。

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fim的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。

#include<stdio.h>

#include<stdlib.h>

#defineN8

structslist

{doubles;

structslist*next;

);

typedefstructslistSTREC;

doublefun(STREC*h)

STREC*creat(double*s)

{STREC*h,*p,*q;inti=0;

h=p=(STREC*)malloc(sizeof(STREC));p->s=0;

while(i<N)

{q=(STREC*)malloc(sizeof(STREC));

q->s=s[i];i++;p->next=q;p=q;

)

p->next=0;

returnh;

)

outlist(STREC*h)

{STREC*p;

p=h->next;printf(〃head〃);

do

{printf(,z->%4.lf/z,p->s);p=p->next;}

while(p!=0);

printf(〃\n\n〃);

)

main()

{doubles[N]={85,76,69,85,91,72,64,87},ave;

voidNONO();

STREC*h;

h=creat(s);outlist(h);

ave=fun(h);

printf(,zave=%6.3f\n/z,ave);

NONOO;

)

voidN0N0()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*in,*out;

inti,j;doubles[N],ave;

STREC*h;

in=fopen(in.dat,r);

out=fopen(〃out.dat〃,〃w〃);

for(i=0;i<10;i++){

for(j=0;j<N;j++)fscanf(in,〃%lf,〃,&s[j]);

h=creat(s);

ave=fun(h);

fprintf(out,〃%6.31f\n〃,ave);

)

fclose(in);

fclose(out);

【參考答案】

doublefun(STREC*h)

(

doubleave=0.0;

STREC*p=h->next;

while(p!=NULL)

{ave=ave+p->s;

p=p->next;

)

returnave/N;

8、

編寫(xiě)函數(shù)fUn,其功能是:將所有大于1小于整數(shù)m的非素?cái)?shù)存入xx所指數(shù)組中,非素?cái)?shù)的個(gè)數(shù)通過(guò)施回。

例如,若輸入17,則應(yīng)輸出:46891012141516.

注意:部分源程序在文件PRQG1.C中。

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)firn的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。

ttinclude<stdio.h>

voidfun(intm,int*k,intxx[])

main()

(

intm,n,zz[100];

voidNONO();

printf(z,\nPleaseenteranintegernumberbetween10and100:〃);

scanf(〃%d〃,&n);

fun(n,&m,zz);

printf(/z\n\nThereare%dnon-primenumberslessthan%d:〃,m,n);

for(n=0;n<m;n++)

printf(〃\n%4d〃,zz[n]);

NONO();

)

voidNONOO

(

/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開(kāi)文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),

輸出數(shù)據(jù),關(guān)閉文件。*/

intm,n,zz[100];

FILE*rf,*wf;

rf=fopen(〃in.dat〃,〃r〃);

wf=fopen(〃out.dat〃,〃w〃);

fscanf(rf,〃%d〃,&n);

fun(n,&m,zz);

fprintf(wf,〃%d\n%d\n〃,m,n);

for(n=0;n<m;n++)

fprintf(wf,zz%d\n/z,zz[n]);

fclose(rf);

fclose(wf);

)

【參考答案】

voidfun(intm,int*k,intxx[])

(

inti,j,n=O;

for(i=4;i<m;i++)/*找出大于1小于整數(shù)m的非素?cái)?shù)*/

{for(j=2;j<i;j++)

if(i%j=0)break;

if(j<i)xx[n++]=i;

)

*k=n;/*返回非素?cái)?shù)的個(gè)數(shù)*/

9、

編寫(xiě)函數(shù)fbn,其功能是:求ss所指字符串中指定字符的個(gè)數(shù),并返回此值。

例如,若輸入字符串123412132,輸入字符為1,則輸出3。

注意:部分源程序在文件PR0GLC中。

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。

#include<stdio.h>

#include<string.h>

#defineM81

intfun(char*ss,charc)

main()

{chara[M],ch;

voidNONO();

printf(AnPleaseenterastring:'*);gets(a);

printfCAnPleaseenterachar:1');ch=getchar();

printfC^nThenumberofthecharis:%d\nn,fun(a,ch));

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

inti;

FILE*rf,*wf;

chara[M],b[M],ch;

rf=fopen(',in.dat,\',rH);

wf=fopen(,'out.dat',,"wu);

for(i=0;i<10;i++){

fscanf(rf,M%s",a);

fscanf(rf,M%sM,b);

ch=*b;

fprintf(wf,"%c=%d\nM,ch,fun(a,ch));

)

fclose(rf);

fclose(w0;

)

【參考答案】

intfun(char*ss,charc)

(

inti=0;

for(;*ss!=,\0,;ss4-+)

if(*ss==c)

i++;/*求出ss所指字符串中指定字符的個(gè)數(shù)*/

returni;

}

10、

編寫(xiě)函數(shù)fim,其功能是:計(jì)算課程的平均分,結(jié)果作為函數(shù)值返回.

例如:若有5門(mén)課程的成績(jī)是:90.5,72,80,61.5,55,則函數(shù)的值為:71.80.

注意:部分源程序在文件PRQG1.C中.

詰勿敵動(dòng)主函數(shù)man由其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fim的花括號(hào)中的填入你編寫(xiě)的若干語(yǔ)句.

#include<stdio.h>

floatfun(float*a,intn)

main()

{floatscore[30J={90.5,72,80,61.5,55},aver;

voidNONO();

aver=fun(score,5);

printf(H\nAveragescoreis:%5.2f\nn,aver);

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*fp,*wf;

inti,j;

floataver,score[5];

fp=fopen(',in.dat,,,',r");

wf=fopen("\oul.dat"Jw");

for(i=0;i<10;i++){

for(j=0;j<5;j++)fscanf(fp,"%f,”,&score[jD;

aver=fun(score,5);

fprintf(wf,n%5.2f\nn,aver);

)

fclose(fp);

fclose(wf);

)

【參考答案】

floatfun(float*a,intn)

(

inti;

floatav=0.0;

for(i=0;i<n;i++)/*求分?jǐn)?shù)的總和*/

av=av+a[i];

return(av/n);/*返回平均值*/

}

11、

學(xué)生的既由學(xué)號(hào)械嬲成,N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)械縱中,請(qǐng)朝函數(shù)狐具功能懸把分軟

髓的學(xué)生數(shù)據(jù)放在啾指的數(shù)組中.注意:分颼高的學(xué)生可能不止一個(gè),函數(shù)返回分?jǐn)?shù)最高的學(xué)生的人數(shù).

注新部分源程用在文件PRQG1,時(shí).

陸勿設(shè)動(dòng)主畫(huà)物nain和其它所教中的任何內(nèi)容,僅在函數(shù)fim的花括號(hào)中填入你縮寫(xiě)的若干語(yǔ)句.

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

int

}STREC;

intfun(STREC*a,STREC*b)

main()

{STRECs[N]={{nGA05M,85},{nGA03n,76},{HGA02n,69},{nGA04n,85},

{“GA01”,91},{“GA07”,72},{“GA08”,64},{“GA06”,87},

{uGA015,',85},{',GA013n,91},{,,GA012n,64},{',GA014,1,91},

{"GAO11",77},[“GAO17”,64},{“GAO18”,64},{”GAO16”,72}};

STRECh[N];

inti,n;FILE*out;

n=fun(s,h);

printfC'The%dhighestscore:\nu,n);

for(i=0;i<n;i++)

printf("%s%4d\n",h[i].num,h[i].s);

printf(AnM);

out=fopen(',out.dat",',wu);

fprintf(out,"%d\n”,n);

for(i=0;i<n;i++)

fprintf(out,n%4d\n",h[i].s);

fclose(out);

)

【參考答案】

intfun(STREC*a,STREC*b)

(

intiJ=0,max=a[0].s;

/*找出最大值*/

for(i=0;i<N;i++)

if(max<a[i].s)max=a[i].s;

for(i=0;i<N;i++)

if(max==a[i].s)b[j++]=a[i];

/*找出成績(jī)與max相等的學(xué)生的記錄,存入結(jié)構(gòu)體b中*/

returnj;

/*返回最高成績(jī)的學(xué)生人數(shù)*/

航縱孵符耕只包含耨種號(hào).潮^曲勤加其璇同「早解前導(dǎo)削號(hào)之外,解中舵*吃部

除磁馳斛襦期僭言海孵褲函況

例如物串例隨為;*楙*A*BC*DEF*G*******,W賒后鐲釉的檎噌是;搟**ABCDEFG,

#include<stdio.h>

voidfun(char*a)

(

/*以下代碼僅供參考*/

inti=0,k;

while(a[i]=='*')i++;

k=i;

while(a[i]!30)/*以下程序段實(shí)現(xiàn)非*字符前移*/

a[k]=W;

)

main()

{chars[81];voidNONO();

printf("Enterastring:\n");gets(s);

fun(s);

printf('Thestringafterdeleted:\n");puts(s);

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*in,*out;

inti;chars[81];

in=fopen("in.dat,V,rn);

out=fopen(',out.dat',,nw,');

for(i=0;i<10;i++){

fscanf(in,"%sH,s);

fun(s);

fprintf(out,,,%s\nM,s);

)

fclose(in);

fclose(out);

)

【參考答案】

voidfun(char*a)

(

inti=0;

char*p=a;

while(*p&&*p=='*')

a[i]=*p;

i++;

P++;

}

while(*p)

(

if(*p!='*')

{a[i]=*p;i++;}

P++;

}

a[i]='\O';

)

13、

編寫(xiě)函數(shù)而dftin(char*pp口),統(tǒng)計(jì)在斷指的字符串中‘a(chǎn)'到'/26個(gè)小寫(xiě)字母各自出現(xiàn)的次數(shù),并依次放在pp所

指的教組中.

例如,當(dāng)輸入字符串a(chǎn)bcdef琳)cdeabc后,程序的輸出結(jié)果應(yīng)該是:

33322110000000000000000000

#include<stdio.h>

#include<string.h>

voidfun(char*tt,intpp[|)

main()

{charaa[1000J;

intbb[26],k;

voidNONO();

printf("\nPleaseenteracharstring:");scanf("%s”,aa);

fun(aa,bb);

for(k=0;k<26;k++)printf(M%d”,bb[k]);

printf("Xn");

NONO();

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

charaa[1000];

intbb[26],k,i;

FILE*rf,*wf;

rf=fopen(nin.datM,nrH);

wf=fopen("out.dat","w");

for(i=0;i<10;i++){

fscanf(rf,aa);

fun(aa,bb);

for(k=0;k<26;k++)fprintf(wf,n%d",bb[k]);

fprintf(wf,n\nn);

)

fclose(rf);

fclose(wf);

)

【參考答案】

voidfun(char*tt,intpp[])

(

inti;

for(i=0;i<26;i4-+)

pp[i]=0;/*初始化pp數(shù)組各元素為0*/

for(;*tt!=,\0f;tt++)

if(*tt>=,a'&&*tt<=,z)

pp[*tt-a]++;

)

14、

規(guī)定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)血,其功能是:將字符串尾部的*號(hào)全部刪除,前面和中間的*號(hào)不

動(dòng).

例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G.在編寫(xiě)函

數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù).

Sinclude<stdio.h>

voidfun(char*a)

main()

{chars[81];voidNONO();

printf("Enterastring:\nz/);gets(s);

fun(s);

printf(,zThestringafterdeleted:\n,z);puts(s);

N0N0();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*in,*out;

inti;chars[81];

in=fopen(in.dat,r);

out=fopen(〃out.dat〃,〃w〃);

for(i=0;i<10;i++){

fscanf(in,〃%s〃,s);

fun(s);

fprintf(out,〃%s\n〃,s);

)

fclose(in);

fclose(out);

)

【參考答案】

voidfun(char*a)

(

while(*a!='\Of)

a++;

a-;/*指針a指向字符串的尾部*/

while(*a==,*')

a-;/*指針a指向最后,個(gè)字母*/

*(a+l)='\0';/*在字符串最后加上結(jié)束標(biāo)志符*/

)

15、

職能是:出游符串瞇廝(不船用喏言提躺游符瞇翻堿),堿返回魁胛符我

闞個(gè)鐲長(zhǎng)助胴,贖回第一個(gè)都胤

例如輸入beijing<CR>shanghai<CR>(<CR>為回車(chē)圈),曲軟將返班hanghai.

#include<stdio.h>

char*fun(char*s,char*t)

(

)

main()

{chara[20],b[20];

voidNONO();

printf("Input1thstring:");

gets(a);

printf("Input2thstring:z,);

gets(b);

printf("%s\n”,fun(a,b));

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*fp,*wf;

inti;

chara[20],b[20];

fp=fopenC'in.dat〃,〃r〃);

wf=fopen(z,out.dat〃,〃w〃);

for(i=0;i<10;i++){

fscanf(fp,〃%s%s〃,a,b);

fprintf(wf,〃如\n”,fun(a,b));

)

fclose(fp);

fclose(wf);

)

【參考答案】

char*fun(char*s,char*t)

(

inti,j;

for(i=0;s[i]!='()&++);/*求字符串的長(zhǎng)度*/

for(j=0;t[j]!='\0';j++);

if(i<=j)/*比較兩個(gè)字符串的長(zhǎng)度*/

returnt;/*函數(shù)返回較長(zhǎng)的字符串,若兩個(gè)字符串長(zhǎng)度相等,則返回第1個(gè)字符串

*/

else

returns;

)

16、

牲猊鼬耨殿麟,楣勝僦脅郵黏蛛微黜,請(qǐng)柄漱趾W:漱蛔

落期蟬例/靛孵號(hào)畫(huà)改輜九智娥鉗能學(xué)號(hào),蹄博幡號(hào)I辨,?-1.慚

傭拜神除觸軟覬卿).

#include<stdio.h>

#include<string.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

STRECfun(STREC*a,char*b)

)

main()

{STRECs[N]={{nGA005M,85},{nGA003n,76},{,,GA002H,69},{HGA004M,85},

{nGAOOr\91},{nGA007n,72},{nGAOO8M,64},{nGA006n,87),

{"GAO15”,85},{“GAO13”,91},{“GAO12”,64},{“GAO14*91},

{“GA011”,77},{“GA017”,64},{“GA018”,64},{“GA016”,72}};

STRECh;

charm[10];

inti;FILE*out;

printf(*Theoriginaldata:\nn);

for(i=0;i<N;i++)

{if(i%4==0)printf('\nu);

n

printf("%s%3d,s[i].numts[i].s);

)

printf('\n\nEnterthenumber:");gets(m);

h=fun(s,m);

printf('Thedata:");

printf(An%s%4d\n",h.num,h.s);

printf(AnH);

out=fopen("out.dat'\"wM);

h=fun(s,nGAO13M);

fprintf(out,M%s%4d\nH,h.num,h.s);

fclose(out);

}

【參考答案】

STRECfun(STREC*a,char*b)

(

inti;

STRECstr={”\O”,-l};/*若沒(méi)找到指定的學(xué)號(hào),在結(jié)構(gòu)體變量中給學(xué)號(hào)置空串,給成績(jī)置一

1*/

for(i=0;i<N;i++)

if(strcmp(a[i].num,b)=0)/*找到指定學(xué)號(hào)的學(xué)生數(shù)據(jù)*/

str=a[i];

str=a[i];

returnstr;/*返回學(xué)生記錄*/

}

17、

螂加mbw-w&f,轆槌赫肝蝴懈

減械械鼾處躺懈??舶酬越

聊,當(dāng)例5,問(wèn)就,跚i邈娠c=5Wl

#include<stdio.h>

voidfun(inta,intb,long*c)

main()

{inta,b;longc;

voidNONO();

printf(nInputa,b:n);scanf("%d,%d”,&a,&b);

fun(a,b,&c);

printf('Theresultis:%d\n",c);

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*rf,*wf;

inti,a,b;longc;

rf=fopen(uin.dat';Mr");

wf=fopen(,'out.dat,,,,'wn);

for(i=0;i<10;i++){

fscanf(rf,H%d,%d",&a,&b);

fun(a,b,&c);

fprintf(wf,na=%d,b=%d,c=%ld\nu,a,b,c);

)

fclose(rf);

fclose(w0;

)

【參考答案】

voidfun(inta,intb,long*c)

(

*c=b%10+(a/10)*l0+(b/10)*100+(a%10)*1000;

)

18

編寫(xiě)函數(shù)firn,其功能是:利用下面的簡(jiǎn)單迭代方法求方程cos(x)—x=0的一個(gè)實(shí)根.

%=cos1)

迭代步驟如下:

(1)取幻初值為0.0;

(2)x0=xl,將xl的值賦給xO;

(3)xl=cos(x0),求出一個(gè)新的xl;

(4)若X。-xl的絕對(duì)值小于0.000001,執(zhí)行步聚(5),否則執(zhí)行步聚(2);

(5)所求xl就是方程cos(x)—x=0的一個(gè)實(shí)根,作為函數(shù)值返回.

程序烙給中結(jié)更Rnnt=D7祀DM.

#include<math.h>

#include<stdio.h>

doublefun()

main()

(

voidNONO();

printf("Root=%f\n",fun());

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*wf;

wf=fopen(,'out.dat',,"wn);

fprintf(wf,fun());

fclose(wf);

)

【參考答案】

doublefun()

(

doublexO,xl;

x1=0.0;

do

(

x0=x1;

xl=cos(x0);

}while(fabs(xO-xl)>=le-6);

returnxl;

)

18、

規(guī)定輸入的字符串中只包含錮和號(hào)請(qǐng)編寫(xiě)函數(shù)加頻能懸將字符串中的前導(dǎo)*號(hào)全部移到字符串的尾鼠

例如,字符串中的內(nèi)容為:*******A*BC*DEF*G****,移動(dòng)后,字符串中的內(nèi)容應(yīng)當(dāng)懸A*BC*DEF*G***********.

在編鋤時(shí),不雕用笳言雕的字符串函船

#include<stdio.h>

voidfun(char*a)

main()

{chars[81];intn=0;voidNONO();

printf("Enterastring:\n");gets(s);

fun(s);

printf('Thestringaftermoveing:\nM);puts(s);

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*in,*out;

inti;chars[81];

in=fopen(,,in.dat,,,Y,);

out=fopen("out.dat",nw");

for(i=0;i<10;i++){

fscanf(in,"%s",s);

fun(s);

fprintf(out,H%s\nM,s);

}

fclose(in);

fclose(out);

)

【參考答案】

voidfun(char*a)

(

inti=0,n=0;

char*p;

p=a;

while(*p==*)/*判斷*p是否是*號(hào),并統(tǒng)計(jì)*號(hào)的個(gè)數(shù)*/

(

n++;p++;

}

while(*p)/*將前導(dǎo)*號(hào)后的字符傳遞給a*/

{

a[i]=*p;i++;p++;

}

while(n!=0)

{

a[i]='*';i++;n-;

)

a[i]-\0';

)

19、

規(guī)定輸入的字符串中只包含字母和*號(hào).請(qǐng)編寫(xiě)函數(shù)fon,具功能是:將字符串中的前導(dǎo)*號(hào)全部移到字符串的尾部.

例如,字符串中的內(nèi)容為:*******A*BC*DEF*G****,移動(dòng)后,字符串中的內(nèi)容應(yīng)當(dāng)是:A*BC*DEF*G***********.

在編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù).

#include<stdio.h>

voidfun(char*a)

)

main()

{chars[81];intn=0;voidNONO();

printf("Enterastring:\n");gets(s);

fun(s);

printf(*Thestringaftermoveing:\nn);puts(s);

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*in,*out;

inti;chars[81];

in=fopen(,,in.dat,,,T,);

out=fopen("out.datn,"w");

for(i=0;i<10;i++){

fscanf(in,"%sM,s);

fun(s);

fprintf(out,"%s\n”,s);

}

fclose(in);

fclose(out);

)

【參考答案】

voidfun(char*a)

(

inti=0,n=0;

char*p;

p=a;

while(*p=='*')/*判斷*p是否是*號(hào),并統(tǒng)計(jì)*號(hào)的個(gè)數(shù)*/

(

n++;p++;

)

while(*p)/*將前導(dǎo)*號(hào)后的字符傳遞給a*/

(

a[i]=*p;i++;p++;

)

while(n!=0)

{

a[i]-*';i++;n-;

)

a[i]-\0";

)

20

聯(lián)虢物懶眥瞬帶蝌微B中,?幀想糠肝酗懶

臧鐮腑躺處觸掰他微械楙料處

胸,組=45,b=lM酬嫡f(shuō)ec=151

#include<stdio.h>

voidfun(inta,intb,long*c)

main()

{inta,b;longc;

voidNONO();

printf(nInputa,b:n);

scanf(n%d,%dM,&a,&b);

fun(a,b,&c);

printf(°Theresultis:%ld\nn,c);

NONO();

}

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*rf,*wf;

inti,a,b;longc;

rf=fopen(uin.dat';nrH);

wf=fopen(',out.dat,,,"wn);

for(i=0;i<10;i++){

fscanf(rf,,,%d,%d,',&a,&b);

fun(a,b,&c);

fprintf(wf,,,a=%d,b=%d,c=%ld\nu,a,b,c);

)

fclose(rf);

fclose(wf);

)

【參考答案】

voidfun(inta,intb,long*c)

*c=a/10+(b%10)*10+(a%10)*100+(b/10)*1000;

21、

罩寫(xiě)函數(shù)firn,其功能是計(jì)算:

s=Jin⑴+ln(2)+ln⑶+……+ln(㈤5作為函數(shù)值返回.

在C語(yǔ)言中可調(diào)用log(n)函數(shù)求ln(n)□lo唾數(shù)的引用說(shuō)明為:doublelog(doublex).

列如,若m的值為2。,則fun函數(shù)宿為6.506583。

#include<math.h>

#include<stdio.h>

doublefun(intm)

)

main()

(

voidNONO();

printf(u%f\nu,fun(20));

NONO();

}

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*fp,*wf;

inti,n;

doubles;

fp=fopen("in.datn,nr");

wf=fbpen("out.dat","w");

for(i=0;i<10;i++){

fscanf(fp,"%cT,&n);

s=fun(n);

fprintf(wf,H%f\nn,s);

}

fclose(fp);

fclose(wf);

}

【參考答案】

doublefun(intm)

(

inti;

doubles=0.0;

fbr(i=l;i<=m;i++)

s=s+log(i);/*計(jì)算s=lo(l)+ln(2)+ln(3)+…+ln(m)*/

returnsqrt(s);/*對(duì)s求平方根并返回*/

)

22、

螂麗解怫含哪號(hào),蠲嬲幗聯(lián)齷

W.膀潞即鐲醐颼蟋柵了淵腺啾慎膀檢燈將鐘銅號(hào)舲機(jī)蹄

鼬不微牖雌螂BB,

魏慚****A*BC*DPG******嘛,掰軸擷瑞A*BC*DEF*G.

#include<stdio.h>

voidfun(char*a,intn,inth,inte)

)

main()

{chars[81],*t,*f;intm=0,tn=O,fn=0;voidNONO();

printf("Enterastring:\n");gets(s);

t=f=s;

while(*t){t++;m++;}

t-;

while(*t==*r){t—;tn++;}

while(*f=**'){f++;fn++;}

fun(s,m,fn,tn);

printf(*Thestringafterdeleted:\n");puts(s);

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*in,*out;

inti;chars[81],*t,*f;

intm=0,tn=O,fn=O;

in=fopenC'in.dat'VY");

out=fopen("out.dat",nw");

for(i=0;i<10;i++){

fscanf(in,,,%sM,s);

t=f=s;

m=0;tn=O;fn=O;

while(*t){t++;m++;}

while(*t=='*'){t--;tn++;}

while(*f='*'){f++;fn++;}

fun(s,m,fn,tn);

fprintf(out,"%s\n",s);

)

fclose(in);

fclose(out);

)

【參考答案】

voidfun(char*a,intn,inth,inte)

(

inti,j=0;

for(i=h;i<n-e;i++)/*第,個(gè)字母和最后一個(gè)字母之間的字符全不刪除*/

a[j++]=a[i];

a[j]='\0';/*在字符串最后加上結(jié)束標(biāo)識(shí)*/

}

23、

函數(shù)血的功能是將蜥指字符串中下標(biāo)為儡數(shù)的字符刪除,剩余字符形成的新串放在慚指數(shù)組中。

例如,當(dāng)新指字符串中的內(nèi)容為"ABCDEFGHIJK"時(shí),在儕微組中的內(nèi)容應(yīng)急"BDF肌

\、—&fI-、laIa*———.—I

#include<stdio.h>

#include<string.h>

voidfun(char*s,chart[])

main()

(

chars[100Lt[100];

voidNONO();

printf(H\nPleaseenterstringS:n);scanf("%s",s);

fun(s,t);

printf("\nTheresultis:%s\nu,t);

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

chars[100Lt[100];

FILE*rf,*wf;

inti;

rf=fopen("in.dat"Jr”);

wf=fopen(out.dat","wn);

for(i=0;i<10;i++){

fscanf(rf,"%s",s);

fun(s,t);

fprintf(wf,"%s\n",t);

)

fclose(rf);

fclose(wf);

)

【參考答案】

voidfun(char*s,chart[J)

(

inti,j=O,k=strlen(s);/*k為字符串的長(zhǎng)度*/

for(i=l;i<k;i=i+2)/*將s所指字符串中下標(biāo)為奇數(shù)的字符存入t所指字符串中*/

t[j++]=s[i];

t[j]=\0';

}

24、

蒯加欺據(jù)榆、b中卿酈躥撇鋪舫疆;版神)制ft

雕源在翹曲百毓個(gè)處b神橫舲餓麻轆建而十拗]也上

瓶當(dāng)a=45,b=12,跚翅垢c=2415.

#include<stdio.h>

voidfun(inta,intb,long*c)

main()

{inta,b;longc;voidNONO();

printf("Inputa,b:n);

scanf(u%d%dn,&a,&b);

fun(a,b,&c);

printf(°Theresultis:%ld\nn,c);

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*rf,*wf;

inti,a,b;longc;

rf=fopen("in.dat'\nrH);

wf=fopen("out.dat","wn);

for(i=0;i<10;i++){

fscanf(rf,n%d,%d",&a,&b);

fun(a,b,&c);

fprintf(wf,,,a=%d,b=%d,c=%ld\n'\a,b,c);

fclose(rf);

fclose(wf);

)

【參考答案】

voidfun(inta,intb,long*c)

(

*c=a%10+(b/10)*10+(a/10)*100+(b%10)*1000;

)

25

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論