国家二级c语言上机考试分类编程题_第1页
国家二级c语言上机考试分类编程题_第2页
国家二级c语言上机考试分类编程题_第3页
国家二级c语言上机考试分类编程题_第4页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编程题请编官函数ftin,育能是:设砺M整型二维数组中最大元素的值,并格皿值返回调用函数.注意:部分源程序在文件PR0G1.C中.请勿改动主函数main和其它函数中的任何内容,仅在函数firn的花括号中填入你编写的若干语句.#include<stdio.h>#defineM4intfun(inta[][M])main(){intarrt2][M]={5,8,3,45,76,412,82};voidNONOQ;printf(nmax=%d\n\fun(arr));NONO();)voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*wf;intarr[][M]={5,8,3,90,76,-4,12,82);wf=fopen("out.dat","w");fprintf(wf,nmax=%d\nn,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 ,请编写函数版i,其功能是:找出2xM整型二维数组中最大元素的值,并将此值返回调用函数。注意:部分源程序在文件PR0G11中.请勿改动主函数main和其它函数中的任何内容,仅在函数firn的花括号中填入你编写的若干语句.#include<stdio.h>#defineM4intfun(inta[][M])main(){intarr[2][M]={5,8,3,45,76,-4,12,82);voidNONO();printf("max=%d\n'\fun(arr));NONO();voidNONO0{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*wf;intarr[][M]={5,8,3,90,76,412,82};wf=fopen("out.dat'V'wn);fprintf(wf,,,max=%d\nH,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;编写函数fim,具功能是:求出倒皿0之间能甥或11整除,但府洞时被刷11整除的所有整数,并将其放在漏指的数组中,通过碰回这些数的个数.注意:惭原程糕文件PR0G1,C丸诗嫩动主碑main袂它酸中的任何内容,仅在破血械帏入体耦的若千语句.#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)printf(AnH);elseprintf("%5dM,aa[k]);NONO();)voidNONO(){/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/intaa[1000],n,k;FILE*fp;fp=fopen(,,out.dat,,;,wH);fun(aa,&n);for(k=0;k<n;k++)if((k+1)%10==0)fprintf(fp,"\nM);elsefprintf(fp,H%5d",aa[k]);fclose(fp);}【参考答案】voidfun(int*a,int*n)(intij=0;for(i=l;i<=100ft;i++) /*求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,并放入数组a中*/if((i%7=0||i%ll=0)&&i%77!=0)a[j++]=i;♦n=j;)4 、规定输入的字符串中只包含字母和嗥编写函数加,其功能是:M除字符串中所有的*号.编写酸时,不得使用畸言提供的字符串函数.例如,字符串中的内容为:****A*BC*DEF*G*******,删除后字符串中的内容应当是:ABCDEFG.注意:部分流卷存在文件PRQG1,时.请勿改动主螺mai部耗函数中的任何内容,仅在函数近的花括号中填入你绢翩若干的语句.#include<stdio.h>voidfun(char*a)main(){chars[81];voidNONO();printf(HEnterastring:\n");gets(s);fun(s);printf('Thestringafterdeleted:\n");puts(s);NONO();)voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars(81];in=fopen(,'in.dat',,T,);out=fopen("out.dat",“w“);for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,M%s\nM,s);)fclose(in);fclose(out);)【参考答案】voidfun(char*a)(intij=0;for(i=0;a[i]!='\0';i++)if(a[i]!='*')aU++]=a[i]; /*若不是要删除的字符'*'则留下*/a[j]='\0';}编写函数firn,具功能是:实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连挎到pl所指的字符串的后面.例如,分别输入下面两个字符串:FirstString—SecondString程序黜FirstString—SecondStnng注意:部分源程存在文件PRQGL时.谙勿改动主函数main和其它函数中的任何内着仅在函数fim的花括号中填入你络写的若干语仇#include<stdio.h>voidfun(charpl[],charp2[])main(){ charsl[80],s2[40];voidNONO();printf('Entersiands2:\n");scanf(',%s%s,',si,s2);printf(',sl=%s\n',»si);printf(',s2=%s\n",s2);printf(Invokefun(sl,s2):\n0);fun(sl,s2);printfC^fterinvoking:\nH);printf(n%s\nM,si);NONO();voidNONO(){/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/inti;FILE*rf,*wf;charsi[80],s2[40|;rf=fopen("in.dat",“r“);wf=fopen(,'out.dat,,,,'wn);for(i=0;i<10;i++){fscanf(rf,"%s",si);fscanf(rf,H%sH,s2);fun(s1,s2);fprintf(wf,M%s\nM,si);}fclose(rf);fclose(wf);}【参考答案】voidfun(charpl[],charp2[])(intij;for(i=0;pl[i]!='\0';i++);ford=0;p2[j]!='\0'u++)pl[i++]=p2[j];某学生的m录由学号、打谟程幅和平均分组成,学号和项课程的成绻已在主函数中给出,请编写函数加,其功能息求出该胜的平均分,辙a记录的翻喊员中.例如,学生的成绻是:85.5,76,69.5,85,91,72,64,5,87.5,则他的平均分应为78H5.注意:部分源程用在文件PRQGL时.请勿改动土都物侬而其它函数中的任何内容仅在函数ftm部位中境入你络写的若干隹句.Sinclude<stdio.h>#defineN8typedefstruct{charnumL10];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(z,The%s'sstudentdata:\n",s.num);for(i=0;i<N;i++)printf("%4.lf\n”,s.s[i]);printf('\nave=%7.3f\n”,s.ave);NONO();)voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/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},TOC\o"1-5"\h\z{*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)Idoubleave=0.0;inti;for(i=0;i<N;i++)a->ave=a->ave+a->s[i];/*求各门成绩的总和*/a->ave/=N;/*求平均分*/解学生的成绩在主函数中放入一个带头节点的链表结构中,城旨向链表的头节点.请编'与函数血,其功能是:求出平均分,并由函数值返回.例如,若学生的成绩是:8576698591726487,则平均分应当是:78.625.注意部分源程弃在文件PROGLC中.请勿改动主函数mai部其它降数中的任何内容,仅在函数firn的花括号中填入你编写的若干语句.#include<stdio.h>Sinclude<stdlib.h>#defineN8structslist{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{printfIf”,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(z,ave=%6.3f\n,z,ave);NONOO;)voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/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 、编写函数痴,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过越回.例如,若输入17,则应输出:46891012141516.注意:部分源程序在文件PR0G1.C中.请勿改动主函数maiir和其它函数中的任何内容,仅在函数firn的花括号中填入你编写的若干语句.#include<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(/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/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,"%d\n",zz[n]);fclose(rf);fclose(wf);)【参考答案】voidfiin(intm,int*k,intxx[])(inti,j,n=O;for(i=4;i<m;i++)/*找出大于1小于整数m的非素数*/{ for(j=2;j<i;j++)if(i%j==0)break;if(j<i)xx[n++]=i;}*k=n; /*返回非素数的个数*/编写函数firn,其功能是:求ss所指字符串中指定字符的个数,并返回此值.例如,若输入字符串123412132,输入字符为1,则输出3.注意:部分源程序在文件。的61.(:中・请勿改动主函数main和其它函数中的任何内容,仅在函数firn的花括号中填入你编写的若干语句.#include<stdio.h>#include<string.h>#defineM81intfun(char*ss,charc))main(){chara[M],ch;voidNONO();printf(AnPleaseenterastring:'*);gets(a);printf(,f\nPleaseenterachar:");ch=getchar();printf(AnThenumberofthecharis:%d\n0,fun(a,ch));NONO();)voidNONO(){/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/inti;FILE*rf,*wf;chara[M],b[M],ch;rf=fopen("in.dat","r“);wf=fopen(,'out.dat',,,,wn);for(i=0;i<10;i++){fscanf(rf,M%sM,a);fscanf(rf,b);ch=*b;fprintf(wf,"%c=%d\nn,ch,fun(a,ch));)fclose(rf);fclose(wf);)【参考答案】intfun(char*ss,charc)(inti=0;for(;*ss!='\0';ss++)if(*ss==c)i++;/*求出ss所指字符串中指定字符的个数*/returni;}10 、编写函数讪,其功能是:计算课程的平均分,结果作为函数值返回.例如:若有5n课程的成绩是:90.5,72,80,61.5,55,则函数的值为:71.80.注意:部分源程序在文件PRQG1.C中.请勿改动主函数mai泳其它函数中的任何内容,仅在函数ftin的花括号中的填入你编舄的若干语句.#include<stdio.h>floatfun(float*a,intn)main(){floatscore[30]={90.5,72,80,61.5,55},aver;voidNONO();aver=fun(score,5);printf(H\nAveragescoreis:%5.2f\nu,aver);NONO();1voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,j;floataver,score[5];fp=fopen(,'in.datn;,r,');wf=fopen(,'\out.dat,,,,,wn);for(i=0;i<10;i++){for(j=0;j<5;j++)fscanf(fp,M%f/',&score[j]);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++)/*求分数的总和*/av=av+a[i];return(av/n);/*返回平均值*/}11、学生的诵由学骊成黝成,N名学生的数据源入主函数中除构体数组抻,请编写函数firn,其功能是:把分数最高的学生数据放在断指的数组轧注意:分数最高的学生可能不止一个,酸返回分数最高的学生的人数.注意:部分源程序在文件PRQG1,时.请勿改动主函物侬1和其它西数中的任何内容,仅在所数血的花括号中埔入体鳍笥的若干语句.#include<stdio.h>#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STREC*a,STREC*b)main(){STRECs[N]={{"GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,85},{“GAO1”,91},{“GA07”,72},{“GA08”,64},{“GA06”,87},{“GAO15”,85},{“GAO13”,91},{“GAO12”,64},{nGA014\91}»{PAO11”,77},{“GAO17”,64},{"GAO18”,64},{”GAO16”,72}};STRECh|N];inti,n;FILE*out;n=fun(s,h);printfC'The%dhighestscore:\n",n);for(i=0;i<n;i++)printf(n%s%4d\n',,h[i].num,h[i].s);printf(AnM);out=fopen(',out.dat,,;,wn);fprintf(out,"%d\n”,n);for(i=0;i<n;i++)fprintf(out,M%4d\n'\h[i].s);fclose(out);}【参考答案】intfun(STREC*a,STREC*b)(inti,j=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];/*找出成绩与max相等的学生的记录,存入结构体b中*/returnj;/*返回最高成绩的学生人数*/时孵脚只包含撇号背羁嘛血助据町字解前导胪号之外,解中舵埼全新I鼠在购福的襦蛹端言廉胛薛派.例如字符串中的内容为;****A*BC*DEF*G*******,M除后,掰中嘛端:*U*ABCDEFG.#include<stdio.h>voidfun(char*a)(/*以下代码仅供参考*/inti=O,k;while(a[i]=='*t)i++;k=i;while(a[i]!=AO')/*以下程序段实现非*字符前移*/a|k|=W;}main(){chars[81];voidNONO();printf("Enterastring:\nM);gets(s);fun(s);printf(*Thestringafterdeleted:\n");puts(s);NONO();}voidNONO0{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopenC^n.dafW);out=fopen(,'out.datM,Mw,');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;char*p=a;while(*p&&*p==,*t)a[i]=*p;i++;P++;1while(*p)(if(*p!='*'){a[i]=*p;i++;)P++;1a[i]='\O';}13 、编写函数voidftm(char*tt,intpp[]).统计在t怖指的字符串中‘a'到26个小写字母各自出现的次数,并依次放在pp所指的数组中.例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:33322110000000000000000000#include<stdio.h>#include<string.h>voidfun(char*tt,intpp[|)main(){charaa[1000];intbb[26],k;voidNONO();printf(M\nPleaseenteracharstring:1');scanf("%s”,aa);fun(aa,bb);for(k=O;k<26;k++)printf(*'%dbb|k]);printf("\nn);NONO();voidNONO(){/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/charaa[1000];intbb[26],k,i;FILE*rf,*wf;rf=fopenC'in.dat'VY");wf=fopen(Mout.dat",Mw°);for(i=0;i<10;i++){fscanf(rf,,'%sn,aa);fun(aa,bb);for(k=0;k<26;k-H-)fprintf(wf,n%d",bb[k]);fprintf(wf,”\n");)fclose(rf);fclose(wf);)【参考答案】voidfun(char*tt,intpp[])(inti;for(i=0;i<26;i++)pp[i]=0; /*初始化pp数组各元素为0*/for(;*tt!=*\0*;tt++)if(*tt>=,a&&*tt<=,z)pp[*tt-a]++;)14 、规定输入的字符串中只包含字母和*号.请编写函数firn,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动,例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G,在编写函数时,不得使用C语言提供的字符串函数.#include<stdio.h>voidfun(char*a)main(){chars[81];voidNONO();printf(z,Enterastring:\n,z);gets(s);fun(s);printf("Thestringafterdeleted:\nz,);puts(s);N0N0();)voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=topen(in.dat,r);out=fopen(〃out.dat”,〃w〃);for(i=0;i<10;i++){fscanf(in, s);fun(s);fprintf(out,"%s\n",s);)fclose(in);fclose(out);)【参考答案】voidfun(char*a)(while(*a!=,\0,)a++;指针a指向字符串的尾部*/while(*a==,*')a—;/*指针a指向最后一个字母*/*(a+l)='\0';/*在字符串最后加上结束标志符*/)15 、朝礴限欺能是:横翎串眯廊(不得螭桀言融的求镯串长麴碱),磷返回较长辨符串.若龄镯长度相同,疑回第一个字解.例如输入beijing<CR>$hanghai<CR>(<CR>粗车像),曲软将诋回Shanghai.#include<stdio.h>char*fun(char*s,char*t)()main(){chara[20],b[20];voidNONO();printf("Input1thstring:/z);gets(a);printf("Input2thstring:");gets(b);printf("%s\n”,fun(a,b));NONO();voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti;chara[20],b[20];fp=fopen(z,in.dat〃,〃r〃);wf=fopen(z,out.dat","w〃);for(i=0;i<10;i++){fscanf(fp,"%s%s〃,a,b);fprintf(wf, fun(a,b));}fclose(fp);fclose(wf);)【参考答案】char*fiin(char*s,char*t)(inti,j;for(i=0;s[i]!=\(r;i++);/*求字符串的长度*/for(j=0;t[j]!='\0';j++);if(i<=j)/*比较两个字符串的长度*/returnt;/*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/elsereturns;}16 、牲猊鼬耨藏毓,第牲帔咽■峨触蜘中,俄3嘛已一髭W烂的翔fe靛蝌哂物,都娥%靛羯螂殿i中⑤号I辨,»I-b愉(肝?解蜘瞅崛).#include<stdio.h>#include<string.h>#defineN16typedefstruct{charnum[10];ints;}STREC;STRECfun(STREC*a,char*b)main(){STRECs[N]={{MGA005M,85},{'*GA003H,76},{MGA002M,69},{HGA004M,85),{nGA00r\91},{"GA007n,72},{MGA008M,64},{"GA00687),{“GA015”,85}A”GAO13”,91},{“GAO12”,64},{HGA014”,91},{“GA011”,77},{“GA017”,64},{“GA018”,64},{”GA0I6”,72}};STRECh;charm[10];inti;FILE*out;printf('Theoriginaldata:\nM);for(i=0;i<N;i++){if(i%4==0)printf(Ann);printf("%s%3dn,s[i].num,s[i].s);)printf(An\nEnterthenumber:*');gets(m);h=fun(s,m);printf('Thedata:");printf('An%s%4d\nH,h.num,h.s);printfCAn11);out=fopen("out.datnwM);h=fun(s;'GA013H);fprintf(out,M%s%4d\nn,h.num,h.s);fclose(out);}【参考答案】STRECfun(STREC*a,char*b)(inti;STRECsg{“\O”,-l};/*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置一1*/for(i=0;i<N;i++)if(strcmp(a[i].num,b)=0)/*找到指定学号的学生数据*/str=a[i];str=a[i];returnstr;/*返回学生记录*/Hh-混破瓶一傕魏在出梆撮WW翻幽慢楸械照册处1ft当F45ib=lM期施娠c=5N2i#include<stdio.h>voidfun(inta,intb,long*c)main(){inta,b;longc;voidNONO();printf("Inputa,b:n);scanf(n%d,%dM,&a,&b);fun(a,b,&c);printf(*Theresultis:%d\nH,c);NONO();)voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopenC^n.dat",V);wf=fopen("out.dat'V'wn);for(i=0;i<10;i++){fscanf(rf,M%d,%dH,&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=b%10+(a/10)*10+(b/l0)*100+(a%10)*1000;)18编写'函数fim,其功能是:利用下面的简单迭代方法求方程cos(x)—x=0的一个实根.3=cos(x”)迭代步骤如下:(1)取xl初值为0.0;(2)x0=xl,将xl的值赋给xO;(3)xl=cos(x0),求出一个新的xl;(4)若xO—xl的绝对值小于0.000001,执行步■聚(5),否则执行步聚(2);(5)所求xl就是方程cos(x)—x=0的一个实根,作为函数值返回.袒序烙蛤中结更Rc»=n7300^6.#include<math.h>#include<stdio.h>doublefun()main()(voidNONO();printfC^Root=%f\nu,fun());NONO();)voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*wf;wf=fopen(,'out.dat',,,,wn);fprintf(wf,ftin());fclose(wf);)【参考答案】doublefun()(doublexO,xl;x1=0.0;do{x0=x1;xl=cos(x0);)while(fabs(xO-xl)>=le-6);returnx1;}、规定输入的字符串中只包含字啊&翩写酸血取能悬将字符串卬的前导*号全部移到字符串的尾部.例如,字符串中的内容为:*******A*BC*DEF*G****,移动后,字符串中的内容应当是:a*BC*DEF*G***********,在编写函数时,不得蛹喈言提供辨符串函乳#include<stdio.h>voidfun(char*a)main(){chars[81];intn=0;voidNONO();printf(HEnterastring:\nM);gets(s);fun(s);printf(*Thestringaftermoveing:\nM);puts(s);NONO();)voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen(,,in.datH,',rn);out=fopen("out.dat",“w“);for(i=0;i<10;i++){fscanf(in,n%sn,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==*1) /*判断*p是否是*号,并统计*号的个数*/{n++;p++;}while(*p) /*将前导*号后的字符传递给a*/(a[i]=*p;i++;p++;)while(n!=0)(a[i]~*';i++;n—;)a[i]=\0';)、规定输入的字符串中只包含字母和*号.请编写函数而,其功能是:将字符串中的前导*号全部移到字符串的尾部.例如,字符串中的内容为:*******A*BC*DEF*G****,移动后,字符串中的内容应当是:a*BC*DEF*G***********.在编写函数时,不得使用C语言提供的字符串函数.#include<stdio.h>voidfun(char*a)main(){chars[81];intn=O;voidNONO();printf(HEnterastring:\n");gets(s);fun(s);printf(*Thestringaftermoveing:\nM);puts(s);NONO();)voidNONO0{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopenC^in.dafW);out=fopen(Mout.dat",'*wH);for(i=0;i<10;i++){fscanf(in,n%sM,s);fun(s);fprintf(out,n%s\nn,s);)fclose(in);fclose(out);}【参考答案】voidfun(char*a)(inti=0,n=0;char*p;P=a;while(*p==*1) /*判断*p是否是*号,并统计*号的个数*/{n++;p++;)while(*p) /*将前导*号后的字符传递给a*/(a[i]=*p;i++;p++;)while(n!=0){a[i]-*';i++;n—;蹄鼬懒毗,翻幽微翻枫肝姗虬例如当a=45,b=lMc=1524.#include<stdio.h>voidfun(inta,intb,longc=a/10+(b%10)*10+(a%10)*100+(b/10)*1000;c)main()c=a/10+(b%10)*10+(a%10)*100+(b/10)*1000;{inta,b;longc;voidNONO();printf(HInputa,b:H);scanf(n%d,%dM,&a,&b);fun(a,b,&c);printf(*Theresultis:%ld\nn,c);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen(uin.dat';V);wf=fopen(,,out.dat',,,,wn);for(i=0;i<10;i++){fscanf(rf,M%d,%dH,&a,&b);fun(a,b,&c);fprintf(wf,,,a=%d,b=%d,c=%ld\n,\a,b,c);)fclose(rf);fclose(wf);}【参考答案】voidfiin(inta,intb,long*c){21、编写函数firn,其功能是计算:s=Sn(l)+ln(2)+ln(U+……+ln(㈤$作为函数值返回.在C语言中可调用log(n)函数求ln(n).1。彝数的弓I用说明为:doublelog(doublex).列如,若m的值为20,则fUn函数值为6.506583.#include<math.h>#include<stdio.h>doublefiin(intm)main()(voidNONO();printf("%f\n”,fun(20));NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n;doubles;fp=fopen(,,in.dat,,,"r,');wf=fopen(',out.dat",,'wu);for(i=0;i<10;i++){fscanf(fp,M%dM,&n);s=fun(n);fprintf(wf,n%f\n",s);)fclose(fp);fclose(wf);)【参考答案】doublefun(intm)(inti;doubles=0.0;fbr(i=l;i<=m;i++)s=s+log(i);/*计算s=ln(1)+ln(2)+ln(3)+…+ln(m)*/returnsqrt(s);/*对s求平方根并返回*/}22 、献灿踊照缔料.潮3够M耿龌期斜瓶牌是醐埸釉镯卿踹», 撼黜了解鹤号幡膀媪1评裤曜副知僧,蹄鼬Mb薪酬Wa**,*BC*DEF*G*******林,湘中曲撷翳AOT#G.#include<stdio.h>voidfun(char*a,intn,inth,inte)main(){chars[8l],*t,*f;intm=0,tn=O,fn=0;voidNONO();printf(''Enterastring:\nM);gets(s);t=f=s;while(*t){t++;m++;}t-;while(*t==**'){t-;tn++;}while(*f='*'){f++;fn++;}fun(s,m,fn,tn);printf(*Thestringafterdeleted:\nH);puts(s);NONO();}voidNONO0{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81],*t,*f;intm=0,tn=O,fn=O;in=fopen(,'in.dat","r,');out=fopen(,'out.dat'\',wM);fbr(i=0;i<10;i++){fscanf(in,M%sM,s);t=fes;m=0;tn=O;fn=O;while(*t){t-H-;m++;}while(*t==**'){t—;tn++;}while(*f=='*'){f++;fn++;}fun(s,m,fn,tn);fprintf(out,n%s\nn,s);)fclose(in);fclose(out);}【参考答案】voidfun(char*a,intn,inth,inte)(inti,j=0;for(i=h;ivn・e;i++)/*第一个字母和最后一个字母之间的字符全不删除*/a[j++]=a[i];a[j]=\0,;/*在字符串最后加上结束标识*/}23 、函数加的麻悬榆所指字符串中下标为偶数辨硼除,剩余字符形成的新串放在新指数组中.例如,当$所指字符串中的内容为"ABCDEFGHIJK"时,在惭指麴中的内容应是:"BDFHJ'.、LI―._..I#include<stdio.h>#include<string.h>voidfun(char*s,chart[])main()(chars[100],t[100];voidNONO();printf(H\nPleaseenterstringS:n);scanf("%s",s);fun(s,t);printf(n\nTheresultis:%s\nu,t);NONO();voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("in.dat",,'rM);wf=fopen(out.dat","w");for(i=0;i<10;i++){fscanf(rf,M%sM,s);fun(s,t);fprintf(wf,n%s\nM,t);}fclose(rf);fclose(wf);1【参考答案】voidfun(char*s,chart[])(inti,j=O,k=strlen(s);/*k为字符串的长度*/加!'6二1"<1<;途1+2)/*将5所指字符串中下标为奇数的字符存入1所指字符串中*/t[j++]=s[i];t[j]=\0';}24 、IWto勤健.b神龄酶正微合瓶一个釉阍搬曲铺舫提:榆林■微惚雌嫩被1愀游处b林十麟个饿楸瘫逃而十蚓他上例如4=45,b=12,端翅垢尸那.#include<stdio.h>voidfiin(inta,intb,long*c)main(){inta,b;longc;voidNONO();printf(HInputa,b:M);scanf(u%d%dM,&a,&b);fun(a,b,&c);printf('Theresultis:%ld\nn,c);NONO();)voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("in.dat",“r“);wf=fopen(',out.dat',;,wn);for(i=0;i<10;i++){fscanf(rf,M%d,%dM,&a,&b);fun(a,b,&c);fprintf(wf,,,a=%d,b=%d,c=%ld\nM,a,b,c);fclose(rf);fclose(wf);)【参考答案】voidfun(inta,intb,long*c)(*c=a%10+(b/l0)*10+(a/10)*100+(b%10)*1000;)25 、瞌灿湘中魁镯1Wb00:雕蒯肋卜,附釉瞅嵯端常 睇跚不糠眦辐麒胛脚t聊湘帕惭叫册DEF,/叫嘛।帮翻的解哨励①日即叫#include<stdio.h>voidfun(char*a,char*p)main(){chars[81],*t;voidNONO();printf(MEnterastring:\nM);gets(s);t=s;while(*t)t-H-;Iwhile(*t==,*,)t—;fun(s,t);printf('Thestringafterdeleted:\nM);puts(s);NONO();)voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81],*t;in=fopen(,'in.dat,W);out=fopenC'out.dat'V'w0);fbr(i=0;i<10;i++){fscanf(in,"%sM,s);t=s;while(*t)t++;while(*t=***)t—;fun(s,t);fprintf(out,n%s\nn,s);}fclose(in);fclose(out);1【参考答案】voidfun(char*a,char*p)(char*t=a;fbr(;t<=p;t+4-)*(a++)=*t;foK;*t!=V)';t++)*(a++)=*t;*a=10';/*在字符串最后加上字符串结束标识*/}26 、学生猊鼬学琳解雇,楣姓懒瞅遍懒邮醐业翻月薄恤勘龌嬲丽翻学锄温ra.#include<stdio.h>#defineN16typedefstruct{charnum[10];ints;}STREC;voidfun(STRECa[])main(){STRECs[N]={{,,GA005,,,85},{,,GA003,,,76},{,,GA002M,69},{,,GA004',,85},{HGA00r\91},{“GA007”,72},{“GA008”,64},{”GA006”,87},{nGAO15\85},{HGAO13M,91},{HGAO12”,64},{“GAO14”,91},{℃AO11”,66},{nGA017n,64},{"GA018",64},{uGA016*72});inti;FILE*out;fun(s);printfC'Thedataaftersorted:\nM);for(i=0;i<N;i++){if((i)%4==0)printf(,'\n,');printf("%s%4dM,s[i].num,s[i].s);)printf(AnM);out=fopen("out.dat',,"wn);for(i=0;i<N;i++){if((i)%4==0&&i)fprintf(out,M\nM);fprintf(out,M%4dM,s[i].s);}fprintf(out/*\n,');fclose(out);}【参考答案】voidfun(STRECa[])Iinti,j;STRECt;for(i=1;i<N;i++)/*用冒泡法进行排序,进行N—1次比较*/for(j=0;j<N-l;j++)/*在每一次比较中要进行N—1次两两比较*/if(a[j].s<a[j+l].s){t=a[j];a[j]=a[j+l];a[j+l]=t;}/*按分数的高低排列学生的记录,高分在前*/}27 、一一船鼬单鞭福痛,唠生雌瞅懒中雌檄业微驰黄丽期假出鼾kw蛾蟠m嬲鲫捕梆躺鞋厕瞅蒯斗后幽檀蛔,#include<stdio.h>#defineN12typedefstruct{charnum[10];doubles;}STREC;doublefun(STREC*a,STREC*b,int*n)main(){STRECs[N]={{"GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,85},{,,GA0r\91},{,,GA07,1,72},{"GA08”,64},{“GA06H,87},{“GA09”,60},{“GA11”,79},{“GA12”,73},{“GA10”,90}};STRECh[N],t;FILE*out;inti,j,n;doubleave;ave=fun(s,h,&n);printf(*The%dstudentdatawhichishigherthan%7.3f:\n'\n,ave);for(i=0;i<n;i++)printf(M%s%4.1f\nM,h[i].num,h[i].s);printf(AnH);out=fopen("out.datM,"wu);fprintf(out,",%d\n%7.3f\n'\n,ave);for(i=0;i<n-l;i++)fbr(j=i+l;j<n;j++)if(h[i].s<h[j].s){t=h[i];h[i]=h[j];h[j]=t;}for(i=0;i<n;i++)fprintf(out,,'%4.1f\n,,,h[i].s);fclose(out);)【参考答案】doublefun(STREC*a,STREC*b,int*n)(inti;doubleav=0.0;*n=0;fbr(i=0;i<N;i++)av=av+a[i].s;av=av/N; /*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];*n=*n+1;}/*将高于等于平均分的学生存入b所指存储单元中,并统计人数*/returnav;/*返回平均分*/)28 、购魄岫勤龌:做到m加(含m)翻械健除腑魂物微知中,并蚓腿厮理雌像,例虬若傲品施为5。,则瞬也7II1411力.11M414440#include<stdio.h>#defineM100voidfun(intm,int*a,int*n)()main(){intaa[M],n,k;voidNONO();fun(50,aa,&n);for(k=0;k<n;k++)if((k+l)%20==0)printf(H\nn);elseprintf(M%4dM,aa[k]);printf(AnH);NONO();voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n,j,k,aa[M],sum;fp=fopen("in.dat”;T');wf=fopen(,'out.dat',,,,wn);for(i=0;i<10;i++){fscanf(fp,n%d,'\&j);fun(j,aa,&n);sum=0;for(k=0;k<n;k-H-)sum+=aa[k];fprintf(wf,n%d\nM,sum);)fclose(fp);fclose(wf);}【参考答案】voidfun(intm,int*a,int*n)(inti,j=0;fbr(i=l;i<=m;i4-+)if(i%7==0lli%11==0)/*求出1到加(含m)之内能被7或11整除的所有整数放在数组a"'*/a[j++]=i;*n=j;/*返回这些数的个数*/}29 、僦撕踊侬镯1/SWtoW髀解中确导唱蝴Ift 锹胪环除购,早解糊能为:*******A*BC*DPG****,I除曲解棚的应当是A*BC*DEF*G*H\SW时,将蝌C雷触胛碑隆.#include<stdio.h>voidfun(char*a)main(){chars[81];voidNONO();printf(MEnterastring:\n*');gets(s);fun(s);printfC'Thestringafterdeleted:\nM);puts(s);NONO();)voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopenC'in.dat'W);out=fopen("out.dat"wu);fbr(i=0;i<10;i++){fscanf(in,n%sn,s);fun(s);fprintf(oul,"%s\n",s);)fclose(in);fclose(out);)【参考答案】voidfun(char*a)(char*p=a;while(*p==**')p++J*指针p指向字符串第一个字母*/for(;*p!='\0';p++,a++)*a二*p;/*从第一个字母开始,其后的字符都放入指针a所指的字符串中*/*a='\0';/*在字符串最后加上字符串结束标识*/)30 、n舒物应就柱膝中献-情俄林瓣麴触撷球腺赫iwhms腋瞰务崛媚a#include<stdio.h>#include<stdlib.h>#defineN8structslist{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(M->%2.0f'*,p->s);p=p->next;}while(p!=0);printf(An\nH);)main(){doubles[N]={85,76,69,85,91,72,64,87),max;voidNONO();STREC*h;h=creat(s);outlist(h);max=fun(h);printf("max=%6.1f\n",max);NONO();)voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti,j;doubles[N],max;STREC*h;in=fopen("in.dat',;'rn);out=fopen(Hout.datM,"wn);for(i=0;i<10;i++){for(j=0;j<N;j++)fscanf(in,&s|j|);h=creat(s);max=fun(h);fprintf(out,,,%6.1ll\n,\max);)fclose(in);fclose(out);}【参考答案】doublefun(STREC*h)(doublemax=h->s;while(h!=NULL) /*通过循环找到最高分数*/{if(max<h->s)max=h->s;h=h->next;}returnmax;)31 、请羁赧岫丽耻T鞭黝德辑大施及斯硼隔施潮舞瓦辘襦聊配在遹嘛地帆I船虚X糊帽像,面锹纵值,遍概糊液釉稀#include<stdlib.h>#include<stdio.h>#include<time.h>voidfun(inta||,intn,int*max,int*d)voidmain()(FILE*wf;inti,x[20],max,index,n=10;inty[20]={4,2,6,8,11,5};srand((unsigned)time(NULL));fbr(i=0;i<n;i++)(x[i]=rand()%50;printf("%4d”冈i]); /*输出一个随机数组*/)printf(',\nn);fun(x,n,&max,&index);printf(uMax=%5dJndex=%4d\n'\max,index);wf=fopen("out.dat"Jw");fun(y,6,&max,&index);fprintf(wf,,'Max=%5d,Index=%4d,',max,index);fclose(wf);}【参考答案】voidfun(inta||,intn,int*max,int*d){inti;*max=a[0];*d=0;for(i=0;i<n;i++) 产将最大的元素放入指针max所指的单元,最大元素的下标放入指针d所指的单元*/if(*max<a[i]){*max=a[i];*d=i;})32 、弱歌限期飕:将懒锦用悯下标楠姗ASCH岫赚孵的卜,赚瓶舲知隰,釉糠锦眦藤HW揶檄I晚申.肺稔附浮疑的内容为「ABCDEFG曲5",其中早将岫ASCI阀I精斯醐就虾械醐需中除旃物的ASCH呢痢,所在辘神下融为敏,刚怀哨懒舵制麟费国附徽林内'135".#include<stdio.h>#include<string.h>voidfun(char*s,chart[])main()(chars[100],t[100];voidNONO();printfC'XnPleaseenterstringS:M);scanf(n%sn,s);fun(s,t);printf(°\nTheresultis:%s\nu,t);NONOO;)voidNONO0{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars|100],t|100|;FILE*rf,*wf;inti;rf=fopen(',in.dat,';'rM);wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,s);fun(s,t);fprintf(wf,n%s\nn,t);)fclose(rf);fclose(wf);)【参考答案】voidfiin(char*s,chart[])(inti,j=O,n;n=strlen(s);fbr(i=0;ivn;i++)if(i%2!=0&&s[i]%2!=0)(t|j]=s[i];/*将下标为奇数同时ASCII码值为奇数的字符放入数组t中*/j++»}t[j]->\0';/*最后加上结束标识符*/编写函数加其功能是:实现B=A+A',即格矩阵划口上岫转置,存放在矩阵B中.计算结臬在main酸中输出.例如,输入下面的矩阵:其转戢阵为;TOC\o"1-5"\h\z12 3 14 745 6 25 878 9 36 9程序输出:2 6 1061014101418#include<stdio.h>voidfun(inta[3][3],intb[3][3])main() /*主程序*/{inta[3][3]={{1,2,3},{4,5,6),{7,8,9}},t[3][3];inti,j;voidNONO();fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)printf(M%7dM,t[i][j]);printf(“\n");}NONO();voidNONO(){/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/inti,j,k,a[3][3],t[3][3];FILE*rf,*wf;rf=fopen("in.datn,',rM);wf=fopen(Hout.datH,*'wn);for(k=0;k<5;k++){for(i=0;i<3;i++)fscanf(rf,H%d%d%dM,&a[i][0],&a[i][l],&a[i][2]);fun(a,t);for(i=0;i<3;i++){for0=0;j<3;j++)fprintf(wf/'%7d\t[i]0]);fprintf(wf,Ann);))fclose(rf);fclose(wf);}【参考答案】voidfun(inta[3][3],intb[3][3J){inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[i](j]+aUHi];/*把矩阵a加上a的转置,存放在矩阵b中*/熊写函数fun,该函数的功能是:格百咧的二维数组中的辘,按列的顺序依颇到一维数组中.一维数组械据的个数存放在形参副旨的醐单元中.例如,若二维数组申的数据为333333334444444455555555则-维数组中的幅应悬334455334455334455334455#include<stdio.h>voidfun(int(*s)[10],in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论