166M,m,fun(m));out=fopen("outfile.dat',,,,w,');for(m=500;m<3000;m+=500)fprintf(out,"%d
167”,fun(m));fclose(out);)第16套上机考试试题一、填空题从健盘输入一组无符号整数并保存在数组a[M]中,以整数0结束输入,要求这些数的最大位数不超过4位,其元素的个数通过变量len传入fun函数。请补充fun函数,该函数的功能是:从数组a中找出个位和十位的数字之和小于5的所有无符号整数,结果保存在数组b中,其个数由fun函数返回。例如当a[8]={123,11,23,222,42,333,14,5451}时,x[2]={11,22)«请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineM500intfun(inta[],intx[],intlen)(intj,m=0;intt,s;fbr(j=0;j168t=a|j]%10;s=a(j|/10%10;if((t+s)<5)x|m++]=a|j|;)returnm;)main()(inta[M];intb[M];intlen=0,m=0,j=0;printf('Inputlenber:
169u);do(scanf(M%uM,&a[len]);}while(a[len++]!=0);m=fun(a,b,len);printf(',
170b=");for(j=0;jhigh,查找结束。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#defineM5intfun(intb[],intn)(intlow=0,high=M-l,mid;while(low<=high)(mid=(low+high)/2;if(n171elseif(n>b[mid])low=mid+l;elsereturn(mid);)return(-l);}main()(inti,b[M]={9,13,45,67,89},j,n;printf("b数组中的数据如下:");for(i=0;i=0)printf("n=%d,index=%d
172'
173,j);elseprintf("Notbefound!
174u);)三、编程题请编一个函数floatfun(doublec),函数的功能是对变量c中的值保留2位小数,并对第三进行四舍五入(规定c中的值为正数)。例如,若c值为1.234,则函数返回1.230000;若c值为1.235,则函数返回1.240000。注意:部分源程序给出如下。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的花括号中填入所编写的若干语句。#include#includefloatfun(floatc))main()(floata;FILE*out;printf("Entera:");scanf(M%f\&a);printf('Theoriginaldatais:1');printf('Theresult:%f
175",fun(a));out=fopen(,'outfile.dat,',,,wn);
176fprintf(out,n%fn,fun(3.141593));fclose(out);}第17套上机考试试题一、填空题请补充main函数,该函数的功能是:从一个字符串中截取前面若干个给定字符数的子字符串。其中,si指向原字符串,截取后的字符串存放在s2所指的字符数组中,n中存放预截取的字符个数。例如,当sl="xsdfgehrt”,然后输入5,则s2="xsdfg”。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#include#defineN100main()(charsl[N],s2[N];intn,i;printf(,FEnterthestring:
177");gets(sl);printf(MEnterthepositionofthestringdeleted:'1);scanf(M%d,',&n);for(i=0;i178M,s2);)二、改错题下列给定程序中,函数fun的功能是根据整型形参n,计算如下公式的值:2x23x34x4nxn例如,若n中的值为5,则应输出1.463611。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includedoublefun(intn)(doublex=l.0;inti;for(i=2;i<=n;i++)x+=1.0/(i*i);return(x);)main()
179(intn=5;printf(n
180Theresultis%lf
181'\fun(n));}三、编程题编写函数fun,它的功能是计算并输出下列级数数和:„111F=1F1x22x3m(m+1)例如,当m=5时,函数值为0.833333。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includedoublefun(intm)(doublef=0.0;inti;fbr(i=l;i<=m;i++)f=f+1.0/(i*(i+l));returnf;main()(inti;FILE*out;printf("%f
182”,fum5));oul=fopen(”outfile.dat",“w");for(i=0;i<10;i++)fprintf(out,"%nn”,fun⑴);fclose(out);第18套上机考试试题一、填空题请补充main函数,该函数的功能是:从字符串s中取出所有数字字符,并分别计数,把结果保存在数组a中并输出,把其它字符保存在a[10]中。例如:当strl="12312300abc8976542”时,结果为0:21:22:33:24:15:16:17:18:19:1othercharacter:31.仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include
183#includemain()(intj,a[ll];char*s="adfsdasa1232312323";char*t=s;printf('Theorigialdatais:
184M);puts(s);for(j=0;j185n);for(j=0;j<10;j++)printf(',
186%d:%d',,j,a[j]);printf(H
187nothercharacter:%d
188'\a[j]);二、改错题下列给定程序中,函数fun的功能是:从str所指字符串中,找出s所指子串的个数作为函数值返回。例如,当str所指字符串中的内容为asdfghasdfgh,s所指字符串的内容为as,则函数返回整数2。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includeintfun(char*str,char*s)
189{intm;char*p,*r;m=0;while(*str)(p=str;r=s;while(*r)if(*r==*p){r++;P++;)else{break;)ifg=Mr)m++;str++;returnm;)main()(charstr[100],s[100];intn;printf(M
190Pleaseenterstringstr:M);scanf(M%sM,str);printf(n
191Pleaseentersubstrings:H);scanf("%s”,s);n=fun(str,s);printf("
192Theresultis:n=%d
193M,n);}三、编程题编写函数ftin,它的功能是:根据以下公式求的值,结果由函数值带回。m与n为两个正整数且要求m>nop=-■■nl^n-ny.例如:m=10,n=5时,运行结果为252.000000。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
194注意:部分源程序给出如下。#include#includefloatfun(intm,intn)(floatresult,temp=1.0;inti;for(i=l;i<=m;i++)temp=temp*i;result=temp;fbr(temp=1.0,i=l;i<=n;i-H-)temp=temp*i;result=result/temp;fbr(temp=l.0,i=l;i<=m-n;i4-+)temp=temp*i;result=result/temp;returnresult;)main()(FILE*out;printf(',Result=%f
195,,,fun(10,5));out=fopen(',outfile.dat,',MwM);fprintf(out,"%r,fun(12,6));fclose(out);)第19套上机考试试题一、填空题请补充fun函数,该函数的功能是:先将在字符串str中的字符串按逆序存放在t中,然后把str中的字符按正序连接到t的后面。例如,str中的字符串为abc时,则t中的字符串应为cbaabco请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#includevoidfun(char*str,char*t)(intn,i;n=strlen(str);fbr(i=0;i196t[n+i]=str[i];t[2*n]=\0';}main()(charstr[100],t[100J;printf("
197Pleaseenterstring:'*);scanf(M%s",str);fun(str,t);printf(*Theresultis:%s
198",t);)二、改错题下列给定程序中,函数fun的功能是:在字符串的最前端加入n个“*”号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79。请修改函数fun中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfiin(charstr[],intn)chara[80],*p;inti;p=str;fbr(i=O;i199Thestring%s
200",str);printf(n
201Entern(numberof*):");scanf(,'%d,',&n);
202fun(str,n);printfCAnThestringafterinsten%s
203M,str);)三、编程题编写函数fun,该函数的功能是:从字符串中删除指定的字符。同-字母的大、小写按不同字符处理。例如:若程序执行时输入字符串为:justatest,从键盘上输入字符3则输出后变为:jusaes。如果输入的字符在字符串中不存在,则字符串照原样输出。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#include#includevoidfun(chars[],inta)(inti=0;char*p;p=s;while(*p)if(*p!=a)(s[i]=*p;i++;}p++;)s[i]=、0’;)main()(staticcharstr[]=Mjustatest'1;charch;FILE*out;printf("originalstring:%s
204'\str);printf(,rPIeaseinputacharacter:n);scanf("%cM,&ch);fun(str,ch);printf(',str[]=%s
205,,,str);strcpy(str/*justatest1');funCstr/a');out=fopen(,'outfile.dat,,,,,w,');fprintf(out,"%s",str);
206fclose(out);)第20套上机考试试题一、填空题请补充fun函数,该函数的功能是:用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元。例如:输入如下整数:121,333,444,111,555,666,980,431,451,343,则输出结果为:111,3。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#includevoidfun(int*s,intt,int*i)(intj,min;min=s|0];for(j=0;j207",a[i],i);)二、改错题下列给定程序中,函数fim的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给n和m分别输入27和81,则输出的最大公约数为27.请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includeintfun(inta,intb)(intr,temp;if(a208b=temp;)r=a%b;while(r!=0)(a=b;b=r;r=a%b;}return(b);)main()(intn,m,a;printf('Inputnm:");scanf(n%d%d';&n,&m);printf(Hn=%dm=%d
209
210',,n,m);a=fun(n,m);printf('Themaximuncommondivisoris%d
211
212*',a);}三、编程题下列程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(intb[][N]),该函数的功能是:使数组左下半三角元素的值会全部置成0。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#include#defineN3voidfun(intb[][N])(inti,j;for(i=0;i213for(j=0;j214u);)fun(b);printf('THERESULTXn");for(i=0;i215u);}for(i=0;i216");)fclose(out);)第21套上机考试试题一、填空题数组a[N]保存着一组3位数的无符合正整数,其元素的个数通过变量len传入fun函数。请补充fun函数,该函数的功能是:从数组a中找出个位和百位的数字相等的所有无符合整数,结果保存在数组yy中,其个数由fun函数返回。例如:当a[6]={111,323,677,456,987,999}时,b[3]={111,323,999)«请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#defineN500intfiin(inta[],intbb[],intlen)(inti,n=0;
217intg,b;for(i=0;i218M);fbr(i=O;i219
220
221");n=fun(a,b,len);printf(,,
222b=,');for(i=0;i223");)二、改错题下列给定程序中,函数fun的功能是:逐个比较x、y两个字符串对应位置中的字符,把ASCII相等或值小的字符依次存放在z数组中,形成一个新的字符串。例如,若x中的字符串为AbceDEfGy中的字符串为ABdefgC,则z中的字符串应为ABceDEC.请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfun(char*a,char*b,char*z)(inti=0;while(*all*b)(if(*a>*b)z[i]=*b;elsez[i]=*a;
224if(*a)a++;if(*b)b++;i++;))main(){charx[10]="AbceDEfG",y[10]="ABdefgC",z[80]={\0'};fun(x,y,z);printf('Thestringx:");puts(x);printf('Thestringy:");puts(y);printf('Theresult:");puts(z);}三、编程题请编写一个函数unsigned(unsignedn),n是一个大于10的无符号整数,若n是m(m22)位的整数,则函数求出n的后m-1位的数作为函数值返回。例如,n值为1234,则函数返回234。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#includeunsignedfun(unsignedm)(unsignedt,s=O,sl=l,p=O;t=m;while(t>IO)(if(t/10)p=t%10;s=s+p*sl;sl=sl*10;t=t/IO;)returns;)main()(unsignedn;FILE*out;
225printf('Enteraunsignedintegerdata:n);scanf("%u",&n);printf('Theoriginaldatais:%u
226M,n);if(n<10)printf("Dataerror'1);elseprintf('Theresult:%u
227o,fun(n));out=fopen(,,outfile.dat,',,,wn);fprintf(out,M%u'\fun(28));fclose(out);)第22套上机考试试题一、填空题请补充fun函数,该函数的功能是:把一个整数转换成字符串,并倒序保存在字符数组s中。例如,当n=123时,s="321”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#defineM80chars[M];voidfun(longintn)intj=0;while(n>0){sU]=n%10+'0‘;n/=10;j++;)sUJ=W;)main()(longintn=1234567;printf('Theorigialdata:
228u);printf(',n=%ld,',n);fun(n);printf(',
229%s
230,,,s);}二、改错题下列给定的程序中,函数fun的功能是:将str所指字符串中的字母转换为按字母序列的后继字母(Z转换A,z转换为a),其它字符不变。请修改函数fun中的错误,得出正确的结果。
231注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidftin(char*str)(while(*str!=O)(if(*str>=,A,&&*str<=,Z,ll*str>='a,&&*str<=,z,)(if(*str=,Z,)*str='A';elseif(*str=='zr)*str=,a,;else*str+=l;)str++;))main()charstr[80];printfC'VnEnterastringwithlength<80.:n);gets(str);printf(u
232Thestring:**);puts(str);fun(str);printf("
233
234Thecorde:'*);puts(str);)三、编程题请编写一个函数fun(char*str)该函数的功能是把字符串中的内容逆置。例如,字符串中原有的字符串为asdfg,则调用该函数后,串中的内容为gfdsa。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#include#defineN100voidfun(char*str)(charch;inti,m,n;i=0;
235m=n=strlen(str)-1;while(i<(n-i-l)/2)(ch=str[i];str[i]=str[m];str[m]=ch;i++;m-;))main()(chara[N];FILE*out;printff'Enterastring:");gets(a);printf('Theoriginalstringis:");puts(a);fun(a);printfCAn'1);printf('Thestringaftermodified:");puts(a);strcpy(a,"Welcome!”);fun(a);out=fopen("outfile.dat","w");fprinlf(out,"%s”,a);fclose(out);)第23套上机考试试题一、填空题请补充main函数,该函数的功能是求方程ax2+bx+c=0的两个实数根。方程的系数a、b、c从键盘输入,如果判别式(disc=b*b-4*a*c)小于0,则要求重新输入a、b、c的值。例如,当a=2,b=l,c=3时,显示:disc=-13000000,Inputagain!;当a=l,b=2,c=l时,输入方程的两个根分别是:xl=-1.00,x2=-1.00o仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#includemain()(doublea,b,c,disc,xl,x2;
236do(printf('Inputa,b,c:H);disc=b*b-4*a*c;if(disc<0)printf(,,disc=%lf
237Inputagain!
238",disc);)while(disc<0);printf('Theresultis
239H);x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);printf(u
240xl=%6.21f
241x2=%6.2lf
242",xl,x2);)二、改错题下列给定程序中。fun函数的功能是:将q所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指由空格隔开的字符串)。例如,若输入:Goodluck,goodluck!则应输出:GooDluck,goodluck!请修改程序中的错误之处,得出正确的结果。注意:不要改动main函数,不能删行,也不能更改程序的结构。#include#include#includevoidfun(char*q)(inti=0;fbr(;*q;q++)if(i)(if(*q=='1){i=0;*(q-1)=toupper(*(q-1));}}else|i=l;))main()(
243chars[64];intd;printf(H
244Pleaseenteranenglishsentencewithin63letters:*');gets(s);d=strlen(s);s[d+l]='s[d+l]=O;printf("
245
246Beforchanging:%s
247",s);fun(s);printf(n
248Afterchanging:%s
249u,s);)三、编程题编写程序,实现矩阵(3行3歹U)的转置(即行列互换)。例如,若输入下面矩阵:123456789则程序输出:147258369请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfun(inta[3][3])(inti,j,temp;for(i=0;i<3;i-H-)for(j=0;j250for(i=0;i<3;i++)(for(j=0;j<3;j++)printf("%7d",a[i]U]);printf("
251");}fun(a);printf("Converteda:
252");out=fopen("outfile.dat","w");for(i=0;i<3;i-H-)(for(j=0;j<3;j++){printf("%7d",a[i]|j]);fprintf(out,"%7d",a[i][j]);)printf("
253");fprintf(out,"
254");)fclose(out);)第24套上机考试试题一、填空题请补充main函数,该函数的功能是:先以只写方式打开文件file.dat,再把字符串s中的字符保存到这个磁盘文件中。仅在横线上填写所需要的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#include#defineN100main()(FILE*f;inti=0;charch;chars[N]="Welcome!M;if((f=fopen(,,file.dat,,;,wM))==NULL)(printf("cannotopenfile.dat
255");exit(O);)while(s[i])(ch=s[i];
256fputc(ch.f);putchar(ch);i++;)fclose(f);)二、改错题下列给定程序中,函数ftm的功能是:求三个数的最小公倍数。例如,给变量a、b、c分别输入15、11、2,则输出结果应当是330。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includeintfiin(intx,inty,intz)(inti,temp,n,m;i=0;temp=m=n=l;while(temp!=0llm!=0lln!=0)(i=i+l;temp=i%x;m=i%y;n=i%z;)returni;main()(inta,b,c,i;printf('Inputabc:*');scanf(H%d%d%d';&a,&b,&c);printf(',a=%d,b=%d,c=%d
257',,a,b,c);i=fun(a,b,c);printf('Theminimalcommonmultipleis:%d
258n,i);)三、编程题编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(y)・y=0的一个实根。yn+l=cos(yn)迭代步骤如下:(D取yi初值为00。⑵yO=yl,把yl的值赋给y0。(3)yl=cos(yO),求出一个新的yl。(4)若ydyl的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2)。⑸所求yl就是方程cos(x)-y=0的一个实根,作为函数值返回。
259程序将输出结果Result=0.739085o请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includefloatfun()(floatyl=O.O,yO;do(yO=yl;yl=cos(yO);}while(fabs(y0-y1)>=le-6);returnyl;)main()(FILE*out;floatcos=fun();printf(',Result=%f
260,',cos);out=fopen("outfile.datfprintf(out,"%fn,cos);fclose(out);第25套上机考试试题一、填空题请补充main函数,该函数的功能是:计算两个自然数nl和n2(n2<100000)之间所有数的和,nl和n2从键盘输入。例如,当nl=l,n2=100时,sum=5050o仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#includemain()(intnl,n2;longsum;sum=0;printf(nPleaseinputtwonumbersnl,n2
261M);scanf(M%d,%d,\&nl,&n2);while(nl<=n2)(sum+=n1;
262nl++;)printf(,,sum=%ld
263,',sum);}二、改错题下列给定程序中,函数fun的功能是:将str所指字符串的正序和反序进行连接,形成一个新串放在s所指的数组中。例如,当str所指字符串为abc时,则s所指字符串中的内容应为abccbao请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfun(char*str,char*s)(inti,n;n=strlen(str);fbr(i=0;i264Theresultis:%s
265'*,s);)三、编程题请编写一个函数fun,它的功能是:根据以下公式求“的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):n11x2x3Ix2x3x…x〃—=]+—++•••+233x5x73x5x7x---x(2/z-1)程序运后,如果输入精度0.0005,则程序输出为3.140578。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includedoublefun(doublee)
266(doubles;floatn,t,pi;t=l;pi=0;n=L0;s=1.0;while((fabs(s))>=e)(pi+=s;t=n/(2*n+l);s*=t;n++;1pi=pi*2;returnpi;}main()(doubley;FILE*out;printf(uInpute:M);scanf("%lf\&y);printf(n
267e=%lfPI=%lf
268,,,y,fun(y));out=fopen("outfHe.dat",“w");fprintf(out,ne=%lf,PI=%lt
269';0.00003,fun(0.00003));fclose(out);)第26套上机考试试题一、填空题请补充fun函数,该函数的功能是把数组a中的数按从大到小排序。数组的值及元素个数从主函数中输入。例如,输入213,结果为321«请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。—•、填空题#include#defineN100voidfun(inta|]jntn)(inti,j,t;fbr(i=0;i270(t=a[j];a[j]=a|j+l];a[j+l]=t;)}main()(inti=0,n=0;inta[N];printf(''Pleaseinputnumberofdata:'*);scanf(,'%d,',&n);print在“Pleaseinputdata:
271u);while(i272H);二、改错题下列给定程序中,函数fun的功能是:依次取出字符串中所有字母字符,形成新的字符串,并取代原字符串。请修改函数fun的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfun(char*t)(intm,n;for(m=0,n=0;t[m]!=W;m++)if(t[n]>='O'&&t[m]>=,a,&&t[m]<=,z,)t[n++l=t|m];t[n]=^';)main()(chara[40];
273printf(M
274Enterastring:*');gets(a);printf(',
275
276Thestringis:%s
277'\a);fun(a);printfC^nVnThestringofchangingis:%s
278n,a);}三、编程题请编写一个函数fun,它的功能是:将s所指字符串中所有下标为奇数位置上的字母转换为小写(若该位置上下是字母,则不转换)。例如,若输入ABClbCABCabc,则应输出AbClbcAbCabCo请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfiin(char*s)(inti,n;n=strlen(s);fbr(i=l;i='A'&&s[i]<=,Z,)s[i]=s[i]+32;)main()(charstr[101];FILE*out;printf(H
279Pleaseenteranstringwithin100characters:1');gets(str);printfC^VnAfterchanging,thestring:%s
280*',str);fun(str);printf(',
281become:%s
282,,,str);out=fopen("outfile.dat",nw");strcpy(str,"Pleaseenteranstringwithin80characters:n);fun(str);fprimf(out,”%s”,str);fclose(out);第27套上机考试试题
283一、填空题请补充main函数,该函数的功能是:从键盘输入一组字符串,以“0”结束输入,并显示出这个字符串。例如,输入abcdefi),结果显示abcdefo仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。一、填空题#include#defineLEN100main()(inti=-l,j=0;chars|LEN|;printf(Inputastring:");do(i++;scanf(M%cM,&s[i]);}while"[i]!='()*);printf("Displaythestring:
284M);while(j#include#includetypedefstructa(intdata;structa*next;}NODE;intfun(NODE*h)(intsum=O;
285NODE*p;p=h->next;while(p!=NULL){if(p->data%2==0)sum+=p->data;p=p->next;)returnsum;}NODE*link(intn)(NODE*h,*p,*s;inti;h=p=(NODE*)malloc(sizeof(NODE));fbr(i=l;idata=rand()%16;s->next=p->next;p->next=s;p=p>>next;)p->next=NULL;returnh;printlink(NODE*h)(NODE*p;p=h->next;printf(n
286
287THELIST:
288
289HEAD");while(p)(printf(M->%dM,p->data);p=p->next;)printf("
290");}main()(NODE*head;intsum;head=link(5);printlink(head);sum=fun(head);printf(u
291TheresultSUM=%dM,sum);
292printf(n
293n);}三、编程题请编写一个函数fun,它的功能是:求出一个2XM整型二维数组中最小元素的值,并将最小值返回调用函数。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineN3fun(inta[][N])(inti,j,min;min=a[O][O];for(i=0;iv2;i++)for(j=0;j294,',fun(arr));out=fopen("outfile.dal”Jw");fprintf(out,"min=%d'\fun(arr));fclose(out);1第28套上机考试试题一、填空题请补充main函数,该函数的功能是:把字符串strl中的非空格字符拷贝到字符串str2中。例如,若字符串strl="nicetomeetyou!”,贝lj拷贝后的字符串str2=44nicetomeetyou!Mo仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#defineLEN80main()(staticcharsi[LEN]=HJustatest!1*;chars2[LEN];inti=0j=0;printf(',sl:H);puts(sl);while(sl[i])(
295if(sl[i]!=')s2|j++]=sl[i];i++:)printf("
296s2:");for(i=0;i297H);二、改错题下列给定程序中,函数fun的功能是:将字符串str中位于奇数位置的字符或ASCII码为偶数的字符依次放入字符串s中。例如,字符串中的数据为AABBCCDDEEFF,则输出应当是ABBCDDEFFo请修改函数ftm中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#include#defineN100voidfun(char*str,chars[])(inti,j=0;for(i=0;i<(int)strlen(str);i4-4-)if(i%2llstr[i]%2==0)s[j++]=str[i];s[j]=W;)main(){charstr[N],s[N];printf("
298Pleaseenterstrings:n);gets(str);fun(str,s);printf("
299Theresultis:%s
300n,s);三、编程题请编写函数fun,其功能是:将两个两位数的正整数x、y合并成一个整数放在z中。合并的方式是:将x数的十位和个位依次放在z的千位和十位上,y的十位和个位依次放在z的百位和个位上。例如,当x=12y=34,调用该项函数后,z=1324o请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfiin(intx,inty,long*z)(*z=(x/10)*1000+(y/10)*100+(x%10)*10+y%10;
3011main()(intx,y;longz;FILE*out;printf(Inputx,y:M);scanf(*'%d%d,',&x,&y);fun(x,y,&z);printf('Theresultis:%d
302'\z);out=fopen("outfile.dat,,,,,wH);for(x=10;xv20;x++)fun(x=10,109-x,&z);fprintf(out,"%d
303H,z);)fclose(out);第29套上机考试试题一、填空题给定程序的功能是计算并输出下列级数的前N项之和SN,直至USN大于a为止。234SN=—+—+—+・・・+123a的值通过形参传入。例如,若a的值为10.0,则函数值为10.717857。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includedoublefun(doublea)(inti=2;doublenum=2.0;while(num<=a){num=num+(double)(i4-l)/i;i++;)printf(',n=%d
304,,,i);returnnum;)main()(printf("%f
305",fun(10));
306二、改错题下列给定程序中,函数fun的功能是:从num个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参average所指的存储单元中。例如,若输入10名学生的成绩:69.579.58987679065758856则高于平均分的学生人数为5(平均分为76.599998)。请修改程序中的错误,使程序能统计出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#defineM100intfun(float*str,intn,float*averager)(floataverage,temp=0.0;intsum=0,kj;for(k=0;k307Inputmarkofthese%dstudents:
308'
309um);for(p=0;p310Thenumberofstudentsbelowtheaverageis:%d
311”,fun(str,num,&averager));printf('Theaveragemark=%f
312u,averager);}三、编程题请编写函数fun,其功能是:将str所指字符串中下标为偶数同时ASCII值为奇数的字符删除,str中剩余的字符形成的新用放在s所指的数组中。例如,若str所指字符串中的内容为ABCDEFG12345,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其它以此类推。最后s所指的数组中的内容应是BDF12345。
313请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfiin(char*str,chars[]){inti,j=O,n=strlen(str);for(i=0;i314Pleaseenterstring:**);scanf(M%sn,str);fun(str,s);printf(u
315Theresultis:%s
316M,s);out=fopen(,'outfile.dat,',,,wn);strcpy(str/*Pleaseenterstring:n);fun(str,s);fprintf(out,"%s”,s);fclose(out);第30套上机考试试题一、填空题给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includetypedefstruct(intnum;charname[10];}PERSON;voidfun(PERSON*student)
317(PERSONa;if(student[O].num>student[1].num){a=student[O];student[0]=student[2];student[2]=a;if(student[l].num>student[2].num)(a=student[l];student[l]=student[2];student[2]=a;))main()(PERSONstudent[]={5,',Rose,,,2;,Charr,,6,HKateH};inti;fun(student);printf(u
318THeresultis:
319u);for(i=0;i<3;i-H-)printf(n%d,%s
320n,student[i].num,student[i].name);)二、改错题下列给定程序中,函数fun的功能是:将str所指字符串中出现的tempi所指子串全部替换成temp2所指子字符串,所形成的新串放在result所指的数组中。在此处,要求tempi和temp2所指字符串的长度相同。例如,当str所指字符串中的内容为sdfadijfsd行fdsdf,temp1所指子串中的内容为sdf,temp2所指子串中的内容为000时在result所指的数组中的内容应为OOOadijfOOOifdOOO。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfun(char*str,char*temp1,char*temp2,char*result)(char*p,*r,*a;strcpy(result,str);while(*result)(p=result;r=templ;while(*r)if(*r==*p)
321(r++;P++;)elsebreak;)if(*r==\Or){a=result;r=temp2;while(*r)(*a=*r;a++;r++;}result+=strlen(temp2);)else(result++;}))main()(charstr[200],templ[200],temp2[200],result[200];printf(AnInputtheteststringstr:");scanf(M%sH,str);printfC*
322Inputthefirstsubstringtempi:n);scanf("%s;tempi);printf(n
323lnputthesecondsubstringtemp2:M);scanf(',%s),,temp2);if(strlen(templ)==strlen(temp2))(fun(str,templ,temp2,result);printf(n
324Thecombinresultis:%s
325M,result);)else(printf(HError:strlen(temp1)!=strlen(temp2)
326M);
327三、编程题编写函数fun,它的功能是:求m以内(不包括m)同时能被3与7整除的所有自然数之和的平方根a,并作为函数值返回。例如,若m为500时,函数值a=76.131465。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includedoublefun(intm)(doublea=0.0;inti;for(i=l;i328M,fun(500));out=fopen(,,outfiIe.datM,nwM);fprintf(out,H%fH,fun(200));fclose(out);}第31套上机考试试题一、填空题请补充main函数,该函数的功能是:计算四个学生各科的平均分。例如,当score[N][M]={{83,65,63},{89,93,95},{90,63,80},{56,75,77}},则平均分为:795,74.0,78.8.仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#defineN4#defineM3main()(intij;staticfloatscore[N][M]={{83,65,63},{89,93,95},{90,63,80},{56,75,77}};staticfloata[N];for(i=0;i329for(i=0;i330M,i+l^[i]/N);return0;)二、改错题下列给定程序中,函数ftin的功能是:实现两个整数的交换。例如,给x和y分别输入60和65,输出为:x=65y=60o请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfiin(int*x,int*y)(intt;t=*y;*y=*x;*x=t;}main()(intx,y;printf(HEnterx,y:");scanf(H%d%d",&x,&y);fun(&x,&y);printf(Mx=%d,y=%d
331M,x,y);)三、编程题请编写函数fun,其功能是:将str所指字符串中ASCH值为奇数的字符删除,串中剩余字符形成一个新串放在s所指的数组中。例如,若str所指字符串中的内容为asdf,则s所指的数组中的内容应是dfo请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfun(char*str,chars[])(inti,j=O,n;n=strlen(str);
332fbr(i=0;i333Theresultis:%s
334M,s);out=fopen("ooutfile.dat","w");fun(m,s);fprintf(oul,"%s”,s);fclose(out);第32套上机考试试题一、填空题请补充main函数,该函数的功能是:输出一个NXN矩阵,要求非对角线上的元素赋值1,对角线元素赋值0。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。#include#defineN10main()(inta[N][N];inti,j,n;printfCAnlnputn:n);scanf("%d”,&n);for(i=0;i335printf("theresult:
336M);for(i=0;i337
338");for(j=0;j339n);}1二、改错题下列给定程序中函数fun的功能是:从低位开始取出长整型变量x中偶数位上的数,依次构成一个新数放在y中。例如,当x中的数为123456时,则y中的数应为135。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfiin(longx,long*y)(longt=10;x/=10;*y=x%10;while(x>0)(x=x/100;*y=x%10*t+*y;t=t*10;)}main()(longx,y;printf("
340Pleaseenters:");scanf("%ld",&x);fun(x,&y);printf('Theresultis:%ld
341",y);)三、编程题请编写函数fun,其功能是:将两个两位数的正整数x、y合并成一个整数放在z中。合并的方式是:将x的十位和个位依次放在z的百位和个位匕y的十位和个位依次放在z的十位和千位上。例如,当x=12y=34,调用该函数后,z=4132o请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include
342#includevoidfun(intx,inty,long*z)(*z=(y%10)*1000+(x/10)*100+(y/10)*l0+x%10;)main()(intx,y;longz;FILE*out;printf(Inputx,y:M);scanf(M%d%dH,&x,&y);fun(x,y,&z);printf('Theresultis:%ld
343M,z);out=fbpen("outfile.datM,WwM);for(x=20;x<50;x+=3)(fun(x,109-x,&z);fprintf(out,"%ld
344”,z);)fclose(out);第33套上机考试试题一、填空题给定程序中,函数In的功能是:将形参student所指结构体数组中年龄最小者的数据作为函数值返回,并在main函数中输出。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#includetypedefstruct(charname[10];intage;}STUDENT;STUDENTfun(STUDENTstudent[],intn)(STUDENTmin;inti;min=*student;fbr(i=l;i345if(min.age>student[i].age)min=student[i];returnmin;)main()(STUDENTstudentO>CaliceM7Jbaren”,16;'caren",18};STUDENTmin;min=fun(student,3);printf(n
346Theminageresult
347n);printf(,,
348Name:%s,Age:%d
349M,min.name,min.age);}二、改错题下列给定程序中,函数fun的功能是:将s所指字符串中最后一次出现的si所指子串替换成s2所指子串,所形成的新串放在str所指的数据中。在此处,要求si和s2所指字符串的长度相同。例如,当s所指字符串中的内容为abcdabfabc,sl所指子串中的内容为ab,s2所指子串中的内容为99时,则在str所指的数组中的内容为abcdabf99c»请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfun(char*s,char*sl,char*s2,char*str){char*p,*r,*a;strcpy(str,s);while(*str){p=str;r=sl;while(*r)if(*r==*p)(r++;P++;)else{break;}a=str;str++;)
350r=s2;while(*r){*a=*r;a++;r++;}1main()(chars[l00],s1[100],s2[l00],str[100];printf(n
351PleaseenterstringS:n);scanf("%s",s);printf("
352Pleaseentersubstringsi:");scanf(M%sn,sl);printf("
353Pleaseentersubstrings2:M);scanf("%s'\s2);if(strlen(sl)==strlen(s2))(fun(s,sl,s2,str);printf(M
354Theresultis:%s
355'\str);)else(printf(K
356Error:strlen(s1)!=strlen(s2)
357H);学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置・1,作为函数值返回(用于字符串比较的函数是strcmp)o请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#defineM10#defineM10typedefstruct{charnum[10];ints;}SCORE;SCOREfun(SCORE*p,char*q)
358inti;SCOREt;for(i=0;i];break;)else(strcpy(t.num,,,M);t.s=-l;)returnt;)main()(SCOREstu[M]={{MG002M,69},{nG004H,85},{“G001”,96},{“G007”,72},{“G008”,64},{“G006”,87},{“G015”,85},{“G013”,94},{“G012”,64},{“G014”,91}};SCOREt;charm[10];inti;FILE*out;printf('Theoriginaldata:
359M);fbr(i=0;i360u);printf(M%s%3d
361",stu[i].num,stu[i].s);)printf(n
362
363Enterthenumber:*');gets(m);t=fun(stu,m);printf('Thedataprintf(M
364%s%4d
365'\t.num,t.s);printf(',
366n);out=fopen(,'outfile.dat,,,,'w,');t=fun(stu;'G013n);fprintf(out,"%s%4d
367M,t.num,t.s);fclose(out);第34套上机考试试题一、填空题请补充main函数,该函数的功能是求1+2!+3!+…+N!的和。
368例如,1+2!+3!+…+9!的和为409113。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。#includemain()(inti,n;longsum=O,temp=l;printfCAnlnputn:
369n);scanf(n%d'\&n);fbr(i=l;ivn;i++)(temp=temp*i;sum=sum+temp;)printf(>'l!+...+%d!=%ld
370",n,sum);二、改错题下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和b|0|中的数对调、次最大数和b[l]中的数对调。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#defineN10voidfun(int*b,intn)(for(i=0;i<2;i++)(m=i;for(j=i+l;jb[m])m=j;t=b[i];b[i]=b[m];b[m]=t;main()(inta[N]={5J2,9,7,10),n=5,i;for(i=0;i371printf(',
372H);fun(a,n);fbr(i=O;i373");)三、编程题请编写函数fun,其功能是计算并输出下列多项式的值:Fn=1+1/1!+1/2!+1/3!+l/4!+...+l/m!例如,若主函数从健盘给m输入5,则输出为F=2.716667。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:m的值要求大于1但不大于100。部分源程序给出如下。#includedoublefun(intm)(doublet,s=1.0;inti,j;for(i=1;i<=m;i++)(t=1.0;for(j=l;j<=i;j++)t*=j;s+=1.0/t;}returns;)main()(intm;doublef;FILE*out;printf(Inputm:n);scanf("%d”,&m);f=fun(m);printf(nF=%f
374M,f);oul=fopen("outfile.dal",“w");fbr(m=10;m375n,fun(m));fclose(out);)第35套上机考试试题一、填空题请补充fun函数,该函数的功能是:把字符串s中的字符按字符的ASCII码升序排列,处理
376后的字符串仍然保存在原串中,字符串及其长度作为函数参数传入。例如,若干输入“edcba”,则输出为“abcde”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。#include#defineN100voidfiin(charp[],intn)(intij;chart;fbr(i=0;ip[j]){t=p[j];pUl=p[i];p[i]=t;))main()(inti=0,strlen=0;chars|N|;printf(''Pleaseintputastring:
377M);gets(s);while(s[i]!=\0,)(strlen++;i++;)fun(s,strlen);printf("Displaystring:
378u);puts(s);二、改错题下列给定程序中,函数fun的功能是:从N个字符串中找出最长的字符串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#defineN5#defineM81
379char*fun(char(*q)[M])(inti;char*p;P=q[O];for(i=0;i380",N);for(i=0;i381TheNstring:
382';N);for(i=0;i383u);puts(longest);)三、编程题请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始和结尾都没有空格。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#defineM100intfun(char*str)inti,n=O;fbr(i=O;i=,a'&&str[i]<=,z,&&str[i+1]=**llstr[i+1]=W)n++;)returnn;)main()(
384chars|M];intsum=0;FILE*out;char*test[]={"Welcome*',"thisisateststring'1};printf('Enterastring:
385H);gets(s);sum=fun(s);printf('Thenumberofwordis:%d
386
387",sum);out=fopen(,'outfile.dat,',,,wM);fbr(sum=0;sum<2;sum++)fjprintf(out,M%d
388",fun(test[sum]));fclose(out);}第36套上机考试试题一、填空题请补充main函数,该函数的功能是:如果数组a的前一个元素比后一个元素大,则把它保存在数组b中并输出。例如,输入{33,49,56,12,66,52,78,95,80,73},则输出56669580。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#defineN10main()(inti,n=0;inta[N]={33,49,56,12,66,52,78,95,80,73);intb|N];for(i=0;ia[i+l])b[n++]=a[i];printf('Theresultis
389*');fbr(i=0;i390,\i,b[i|);二、改错题下列给定程序中,函数的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(mW10)名学生,并将这些学生数据存放在一个动态分配的连续存储区中,将此存储区的首地址作为函数值返回。请修改函数fun中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include
391#include#include#defineN10typedefstructs(charnum[10];ints;}STUDENT;STUDENT*fun(STUDENTa[],intm)(STUDENTb[N],*t;inti,j,k;t=(STUDENT*)malloc(sizeof(STUDENT)*m);for(i=0;ib[j].s)j=i;strcpy(t[k).num,b|j|.num);t[k].s=b[j].s;b|j].s=0;}returnt;}printresu!t(STUDENTa[],FILE*pf)(inti;for(i=0;i392M,a[i].num,a[i].s);fprintf(pf,H
393
394M);)main()(STUDENTa[N]={{M01M,81},{M02n,89},{H03M,66},{M04H,87),{M05M,77},{M06M,90},{M07M,79},{H08\61},{M09M,80},{“0,71}};STUDENT*Order;inti,m;printf(n*****TheOriginaldata*****
395");printresult(a,stdout);printf(u
396Givethenumberofthestudentswhohavebetterscore:1');scanf(,,%d,',&m);
397while(m>10)(printf(^nGivethenumberofthestudentswhohavebetterscore:'1);scanf(M%dn,&m);)Order=fun(a,m);printf(n*****THERESULT*****
398u);printf(*Thetop:
399u);fbr(i=0;i400",Order[i].num,Order[i].s);free(Order);}三、编程题请编写函数fun,其功能是:将两个两位正整数x、y合并成一个整数放在z中。合并的方式是:将x的十位和个位依次放在z的十位和千位上,y十位和个位依次放在z的百位和个位上。例如,当x=12,y=34,调用该函数后,z=2314o请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#includevoidfun(intx,inty,long*z)(*z=(x%10)*1000+(y/10)*10(n-(x/10)*10+y%10;}main(){intx,y;longz;FILE*out;printf('Inputx,y:");scanf(M%d%d'\&x,&y);fun(x,y,&z);printf(*Theresultis:%ld
401n,z);out=fopen(,'outfile.dat,',,,wM);for(x=2l;x<5l;x+=3)(fun(x,109-x,&z);fprintf(out»,'%ld
402,\z);)fclose(out);}
403第37套上机考试试题一、填空题请补充hin函数,该函数的功能是把数组a中的奇数元素按原来的先后顺序放在原数组后面。例如,输入“5,7,2,42,35,32,28,37,68,13”,则输出“2,42,32,28,68,5,7,35,37,13”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN10voidfun(inta|])(inti,j=O,k=O;intb[N];for(i=0;i404H);for(i=0;i405Theresultlistis
406M);for(i=0;i407H);二、改错题下列给定程序中,函数ftin的功能是:将n(lWnW10)个字符串连接起来,组成一个新串,放在s所指字符串中。例如,把2个字符串as、df连接起来,结果是asdf。请修改程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfiin(charstr[][10],intm,char*s)
408(intj,q,i;fbr(j=O;j409Pleaseentern:H);scanf(M%d",&n);gets(s[O]);printf(AnPleaseenter%dstring:
410",n);for(t=0;t411",p);}三、编程题请编写函数fun,其功能是:将str所指字符串中下标为偶数的字符删除,字符串中剩余字符形成的新串放在s所指数组中。例如,当str所指字符串中的内容为12345678,则在s所指数组中的内容应是2468。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfun(char*str,chars[])(inti,j=0,n=strien(str);for(i=0;i412s[j]=AO';}main()(charstr[100],s[100],m[]=M
413Pleaseenterstring:";FILE*out;printf(m);scanf(H%sn,str);fun(str,s);printf("
414Theresultis:%s
415'\s);out=fopen(,'outfile.dat,,,,,w,');fun(m,s);fprintf(out,n%sn,s);fclose(out);}第38套上机考试试题一、填空题请补充main函数,该函数的功能是:打印出满足个位上的数字、十位上的数字和百位上的数字都相等的所有三位数。本题的结果为:111222333444555666777888999.仅在横线上填写所需耍的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#includemain()(intx,y,z;fbr(x=l;x<10;x+4-)for(y=l;y<10;y++)for(z=l;z<10;z++)if(x=y&&y=z)printf(n%5du,x+y*10+z*100);)二、改错题下列给定程序中,函数fun的功能是:比较两个字符串,将长的字符串的首地址作为函数值返回。请修改函数fun中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includechar*fun(char*s,char*t)(
416intsl=O,tl=O;char*strl,*str2;strl=s;str2=t;while(*strl)(sl++;strl++;)while(*str2)(tl++;str2++;}if(tl>sl)returnt;elsereturns;)main()(charp[80],q[80];printfCAnEnterastring:");gets(p);printf("
417Enteranotherstring:M);gets(q);printfCAnThelongeris:%s
418u,fun(p,q));}三、编程题N名学生的成绩已在主函数中放入一个带头结点的链表结构中,a指向链表的头结点。请编写函数fun,它的功能是:找出学生的最高分,由函数返回。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#defineN5structlist(doubles;structlist*next;);typedefstructlistSTR;
419doublefun(STR*a)(doublemax;STR*q=a;max=a->s;do(if(q->s>max)max=q->s;q=q->next;}while(q!=0);returnmax;}STR*creat(double*s)(STR*a,*p,*q;inti=0;a=p=(STR*)malloc(sizeof(STR));p->s=0;while(is=s[i];i++;p->next=q;p=q;}p->next=0;returna;}printlist(STR*a)(STR*p;p=a->next;printf(',head,');do(printf(M->%2.Ofn,p->s);p=p->next;}while(p!=0);printf(u
420
421H);)
422main()(doubles[N]={69,72,85,80,68),max;STR*a;FILE*out;a=creat(s);printlist(a);max=fun(a);printf("max=%6.IfXn'\max);out=fopen(,'oufile.dat,'/,wM);fprintf(out,Hmax=%6.1f',max);fclose(out);}第39套上机考试试题一、填空题请补充main函数,该函数的功能是:把一维数组中的元素逆置,结果仍然保存在原数组中。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#defineN10main()(inti,j,temp;intb|N|;for(i=0;i423
424
425TheNewlistis:");for(i=0;i426^^);)二、改错题下列给定程序中,函数fun的的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。请修改函数fun中的错误,得出正确的结果。
427注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfun(intx,int*y,int*z)(inti,j,d,t;for(i=3;i428lnputx:");scanf(M%d'\&x);}while(x%2);fun(x,&y,&z);printf(',
429
430%d=%d+%d
431M,x,y,z);三、编程题请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL,而字符串123312就不是回文。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineMAX100intfun(char*s)(inti,n=0,flag=l;char*p=s;while(*p)(
432n++;p++;}for(i=0;i433M);puts(str);if(fun(str))printf(MYES
434M);elseprintf(HNO
435");out=fopen(,'outfile.dat",,,wn);for(i=0;iv4;i++)if(fun(t[i]))fprintfCout/TESXn'*);elsefprintf(out;'NO
436M);fclose(out);}第40套上机考试试题一、填空题请补充main函数,该函数的功能是:打印出1〜99中满足个位数字的平方等于其本身的所有数。本题的结果为:12536.仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#includemain()(inti,n;for(i=l;i<99;i++)(n=i%10;if(n*n==i)
437printf("%4d”,i);}printf("
438H);}二、改错题下列给定程序中,函数fun的功能是:用冒泡法对5个字符串按由小到大的顺序进行排序。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#defineMAX20voidfun(char*str|5])(intij;char*p;for(i=0;i<5;i++)(for(j=i+l;j<5;j++)(if(strcmp(*(str+i),*(str+j))>0)(p=*(str+i);*(str+i)=*(str-Fj);*(str4j)=p;))))main()(inti;char*str[5],s[5][MAX];for(i=0;i<5;i++)str[i]=s[i];printf(M
439Enter5sting(1stingateachline):
440");fbr(i=0;i<5;i-H-)scanf(M%sn,str[i]);fun(str);printf('Thestringsaftersorting:
441M);for(i=0;i<5;i++)printf(n%sn,str[i]);printf(',
442H);
443)三、编程题请编写一个函数,用来删除字符串中的所有空格。例如,输入we1come,则输出为welcome。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#includevoidfun(char*s)(inti=0;char*p=s;while(*p)(if(*p!=,1)(s[i]=*p;i++;)p++;)main()(chars[81];charmessage[]=MInputastring/1;intn;FILE*out;printf(message);gets(s);puts(s);fun(s);printf(n***string:%s
444",s);out=fopen("outfile.dat",“w");fun(message);fprintf(out,M%sM,message);fclose(out);
445第41套上机考试试题一、填空题请补充main函数,该函数的功能是:从键盘输入一个字符串,即一个指定,然后把这个字符及其后面的所有字符全部删除,结果仍然保存在原串中。例如:输入“1234567”,指定字符为“4”,则输出“123”。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#include#defineN100main()(inti=0;chars[N];charch;printf("Pleaseinputastring:");gets(s);printf(''Pleaseinputacharater:0);scanf(,,%c,',&ch);while(s[i]!=\0,)(if(s[i]==ch)break;i++;s[i]='\O';printf('Theresultis:
446");puts(s);下列给定程序中,函数fun的功能是:首先把y所指字符串中的字符按逆序存放,然后将x所指字符串中的字符和y所指字符串中的字符,按排序的顺序交叉合并到z所指数组中,过长的剩余字符接在z所指数组的尾部。例如,当x所指字符串中的内容为1234,y所指字符串中的内容为abcdefg时,z所指数组中的内容应该为1g2f3e4dcba;而当x所指字符串中的内容为abcdef,y所指字符串中的内容为1234时,z所指数组中内容应该为a4b3c2dlef。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#includevoidfun(charz=*Z++;y++;x,char*y,char*z)
447(intij;charch;i=0;j=strlen(y)-l;while(i448Theresultis:%s
449M,s3);三、编程题假定输入的字符串只包含字母和号。请编写函数fun,它的功能是:将字符串中的前导“铲'号全部移到字符串的尾部。例如,若字符串中的内容为"###a#b#c#d###",移动后,字符串中的内容应当是"a#b#c#d######"。在编写函数时,不得使用C语言提供的字符串函数。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
450注意:部分源程序给出如下。#include#includevoidfun(char*s)(inti=0,n=0;char*p;p=s;while(*p=='#")(n++;P++;}while(*p)(s[i]=*p;i++;P++;)while(n!=0)s[i]='#';i++;n—;)s[i]=>\O';)main()(charstr[81],*p;FILE*out;chartest[2][80]={n###A###B#CD######',;,###a#b#c#d###n};inti;printf("Enterastring:M);gets(str);fun(str);printf('Thestringaftermoveing:n);puts(str);out=fopen(',outfile.dat,',,,wn);for(i=0;iv4;i++)(fun(test[i]);fprintf(out,"%s
451M,test[i]);}fclose(out);
452)第42套上机考试试题一、填空题请补充main函数,该函数的功能是:输出方程组a+b=52,a+2b=60的一组正整数解。本题的结果是a=44,b=8。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。注意:部分源程序给出如下。#includemain()(inti,j;for(i=0;i<100;i++)for(j=0;j<100;j++)if(i+j=52&&i+2*j==60)printf('Theanswera=%2d,b=%2d
453",i,j);二、改错题下列给定程序中,函数fun的功能是:找出一个大于给定整数n且紧随n的素数,并作为函数值返回。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includeintfun(intn)(inti,j;for(i=n+l;;i-H-){for(j=2;j=i)retum(i);))main()(intm;printf(n
454Pleaseenterdata:*');scanf(M%dn,&m);printf("%d
455H,fun(m));
456)三、编程题某学生的记录由学号、5门课程成绩和平均分组成,学号和5门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分,并放在记录的ave成员中。请自己定义正确的形参。例如,若学生的成绩是72、83、90、68.5、71.5,则他的平均分应当是77.000。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineM5typedefstruct(charnum[10];doubles[M];doubleave;}SCORE;voidfun(SCORE*p)(doublet=0.0;inti;for(i=0;is|i];t/=M;p->ave=t;)main()(SCOREs={MGA005M,72,83,90,68.5,71.5};inti;FILE*out;fun(&s);printf('The%s*sstudentdata:
457u,s.num);for(i=0;i458n,s.s|i]);printf("
459ave=%7.3f
460u,s.ave);out=fopen("oulfile.dat",“w");fprintf(out,"The%s'sstudentdata:
461M,s.num);for(i=0;i462n,s.s[i]);fprintf(out,',
463ave=%7.3f
464,',s.ave);fclose(out);
465)第43套上机考试试题一、填空题请补充fun函数,该函数的功能是:返回字符数组中指定字符的个数,指定字符从键盘输入。请勿改动主函数main和其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN100intfun(chars[],charch)(inti=0,sum=0;while(s[i]){if(s[i]==ch)sum++;i++;returnsum;)main()(intsum;charstr|N],ch;printf('Inputastring:
466");gets(str);printf(Inputacharacte亡
467");scanf(,'%c,',&ch);sum=fun(str,ch);printf("Numberof%c:%d
468H,ch,sum);}二、改错题下列给定的程序中,函数fun的功能是根据整型形参n,计算如下公式的值:1111X=111-…-I100x100200x200300x300nxn例如,若n=1000,则应输出0.000155。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includedoublefun(intn)
469(doublex=0,d;inti;for(i=100;i<=n;i+=100)(d=(double)i*(double)i;x+=1.0/d;)return(x);}main()(intm=1000;printfCAnTheresultis%lf
470'\fun(m));)三、编程题请编写函数fun,它的功能是:求出str所指字符串中指定字符的个数,并返回此值。例如,若输入字符串asdfasdf,输入字符a,则输出2。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#include#defineN100intfiin(char*str,charc){intn=0;while(*str)(if(*str=c)n++;str++;)returnn;)main()(chars[N],ch;FILE*out;printf(n
471Pleaseenterastring:n);gets(s);printf(H
472Pleaseenterachar:");
473ch=getchar();printf(u
474Thenumberofthecharis:%d
475",fun(s,ch));out=fbpen(^outfile.datMwM);strcpy(s/Thenumberofthecharis:");fprintf(out,',%dH,fun(s,,a,));fclose(out);1第44套上机考试试题一、填空题从键盘输入一组小写字母,保存在字符数组str中,请补充fun函数,该函数的功能是:把字符数组str中字符下标为偶数的小写字母转换成对应的大写字母,结果仍保存在原数组中。例如,输入“asdfghj”,则输出“AsDfGhJ”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN100voidfun(chars[])intj=0;while(s[j]!=\O'){if(j%2==0)s[j]-=32;j++;))main()(charstr[N];printf("Pleaseinputastring:
476M);gets(str);printf('Theoriginalstring:
477*');puts(str);fun(str);printf('Thenewstring:
478");puts(str);)二、改错题下列给定程序中,函数fun的功能是:将字符串p中的所有字符复制到字符串a中,要求每复制三个字符之后插入一个空格。例如,在调用fun函数之前给字符串s输入asdf,调用函数之后,字符串a中的内容则为asdf。
479请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#includevoidfiin(char*p,char*a){inti,j=0;while(*p)(i=0;while(i<3&&*p){a|j]=*p;j++;P++;i++;)if(*p)a[j++]=";)main()(chars[80],a[80];printf("Enterastring:");gets(s);printf('Theoriginalstring:");puts(s);fun(s,a);printf("
480Thestringafterinsertspace:");puts(a);printf("
481
482");}三、编程题请编写函数fun,该函数的功能是:移动一维数组中的内容:若数组中有m个整数,要求把下标从0到t(tWm-l)的数组元素平移到数组的最后。例如,--维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;t的值为3。移动后,一维数组中的内容为:5,6,7,8,9,10,1,2,3,4。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#defineM100voidfiin(int*s,intt,intm)
483(inta[M],i,j=0;for(i=0;i<=t;i++)a[i]=s[i];for(i=t+l;i484M);for(i=0;i485
486Entert:*');scanf(M%d,,,&t);fun(str,t,n);printf(n
487Thedataaftermoving:
488,f);fbr(i=O;i489
490M);out=fopen("outfile.dat","w");fun(test,6J2);for(i=0;i<12;i+4-)fprintf(oul,"%d
491”,lest[i]);fclose(out);}第45套上机考试试题一、填空题请补充fun函数,该函数的功能是:把字符下标能被2和3同时整除的字符从字符串s中删除,把剩余的字符重新保存在字符串s中。字符串s从键盘输入,其长度作为参数传入fun函数。
492例如,输入“abcdefghijk”,则输出“bcdefhijk”。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN100voidfiin(charp[],intn)(inti,k;k=0;fbr(i=0;i493M);gets(s);while(s[i]!=W)(strlen-H-;i++;)fun(s,strlen);printf('ThenewstringAn");puts(s);)二、改错题下列给定程序中函数fun的功能是:从低位开始取出长整型变量a中奇数位上的数,依次构成一个新数放在b中,例如,当a中的数为7654321时,则b中的数为7531。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#includevoidfun(longa,long*b){longsl=10;
494*b=a%10;while(a>0){a=a/100;*b=a%10*sl+*b;sl=sl*10;}1main()(longa,b;printfC'XnPleaseenterdata:");scanf(,,%ld',,&a);fiin(a,&b);printf('Theresultis:%ld
495M,b);)三、编程题请编写函数fun,该函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第n个字符,平移到字符串的最后,把第n+1到最后的字符移到字符串的前部。例如,字符串中原有的内容为asdfghm的值为2,移动后,字符串中的内容应该是dfghas。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#defineM100voidfun(char*str,intn){charb[M];inti,j=0;fbr(i=O;i496main()(chars[M]=MasdfghM;intn;FILE*out;printf('Theoriginalstring:
497");puts(s);printf(u
498
499Entern:");scanf(H%dn,&n);fun(s,n);printf("
500Thestringaftermoving:
501H);puts(s);printf("
502
503");out=fopen(Houtfile.datn,nw");fun(s,strlen(s)-n);fun(s,3);fprintf(oul,"%s”,s);fclose(out);第46套上机考试试题一、填空题请补充fun函数,该函数的功能是:求100(不包括100)以内能被2或3整除,但不能同时被2和3整除的自然数。结果保存在数组a中,fun函数返回数组a元素的个数。请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#defineN100intfun(inta[])(inti,j;for(i=l,j=0;i<100;i++)if((i%2!=0&&i%3=0)ll(i%2==0&&i%3!=0))a|j++]=i;returnj;)main()(inti,n;inta[N];n=fun(a);fbr(i=0;i504");printf("%4d",a[i]);二、改错题下列给定程序中,函数fun的功能是:求n!(n<20),所求阶乘的值作为函数值返回。例如,若
505n=5,则应输出120o请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include