全国计算机等级考试二级C语音上机题库2011年3月1_第1页
全国计算机等级考试二级C语音上机题库2011年3月1_第2页
全国计算机等级考试二级C语音上机题库2011年3月1_第3页
全国计算机等级考试二级C语音上机题库2011年3月1_第4页
免费预览已结束,剩余162页可下载查看

下载本文档

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

文档简介

下列给定程序中,函数fun的功能是:计算S=H-n)+f(-n+l)+...+f(0)+f(l)+f(2)+...f(n)的值。例如,当n为5时,函数值应为10.407143of(x)函数定义如下:f(x尸请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<math.h>fi;doublex)(ifi(x=0.0||x=2.0)return0.0;elseif(x<0.0)return(x-l)/(x-2);elseretum(x+l)/(x-2);)doublefun(intn)|inti;doubles=0.0,y;fbr(i=-n;i<=n;i-H-){y=fi[1.0*i);s+=y;}/*************'f^und**************/returns}voidmain(){system(”CLS”);printf(n%f\nM,fun(5));}【参考答案】(1)错误:fifdoublcx) 正确:doubleRdoublcx)⑵错误:returns 正确:returns;t=l+l/2+l/3+l/4+…+l/m例如,若输入5,则应输出2.283333o请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>doublefun(intm){doublet=1.0;intI;fbr(I=2;l<=m;l-H-)t+=1.0/k;

return1;voidmain(){intm;system(HCLSn);printfiC'^nPleaseenter1integernumber:");scanf(n%dn,&m);printfi(H\nThcresultisfun(m));}【参考答案】正确:t+=1.0/I;正确:returnt;正确:t+=1.0/I;正确:returnt;(2)错误:returnI;下列给定程序中,函数fun的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s输入:AaaaBBbl23CCccccd,则应输出结果:upper=5,lower=9。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<conio.h>#include<stdio.h>voidfiin(char*s,inta,intb)while(*s)/*********命und***********/if(*s>=,A,&&*sv=Z)a++;/*********tound***********/ifi(*s>=,a'&&♦s<=,z,)b++;s++;)main()chars[100];intupper=0,lower=0;printfif^npleaseastringgets(s);ftin(s,&upper,&lower);printfl(,,\nupper=%dlower=%d\n'\upper,lower);【参考答案】(1)错误:voidftin(char*s,inta,intb)正确:voidfun(char*s,int*a,int*b)⑵错误:正确:(*a)++;⑶错误:b++; 正确X*b)++;

下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#include<conio.h>longfun(longnum)/*************^^und**************/longk;dok*=num%10;/*************tound**************/num\=10;}while(num);retum(k);main()intn;printff'\Plcaseenteranumber:");scanf(n%ldn,&n);printf(M\n%ld\nn,fun(n));)【参考答案】⑴错误longk;正确:longk=l;(2)错误:(2)错误:num\=10;正确:num/=10;下列给定程序中函数fun的功能是:计算n!。例如,给n输入5,则输出120.000000。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includc<stdio.h>#include<conio.h>doublefun(intn){doubleresult=1.0;/*************^Qund**************/ifn=0return1.0;while(n>1&&n<170)/*************tound**************/result=n-;returnresult;voidmain(){intn;printf(MInputN:M);scanf(M%d",&n);printf(M\n\n%d!=%lf\nM,n,fiin(n));}【参考答案】⑴错误:ifn==0 正确:if(n==0)(2)错误:result=n-;正确:result*=n-;下列给定的程序中,函数ftm的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数的值为4622o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>intfiin(intk){intm=0,mc=0,j;while((k>=2)&&(mc<10))…**************if((k%13=0)||(k%17=0)){m=m+k;mc++;}k・・;/***************************/returnm;)voidmain(){system(,,CLSM);printff%d\nM,fiin(500));)【参考答案】⑴错误M(k%13=0)||(k%17=0))正确:if((k%13==0)||(k%17=0))(2)错误:缺少大括号正确:加}下列给定程序中,函数ftin()的功能是:根据整型形参m的值,计算如下公式的值:请改正函数ftin()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>doublefun(intm){doubley=1.0;

int1;/*************f^)und**************/fbr(I=2;I<m;I-H-)/***************************/y-=l/(I*I);retum(y);voidmain(){intn=5;system(nCLSM);printf(n\nTheresultis%lf\nn,ftin(n));}【参考答案】⑴错误:fbr(i=2;i〈m;iH)正确:fbr(i=2;iv=m;i++)(2)错误:y=l/(i*i);正确:y・=L0/(i*i);在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。例如,数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000=请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<conio.h>#include<stdio.h>doublefun(intx[])/*************tound**************/intsum=0.0;intc=0,1=0;while(x[I]!=0)sum+=x[I];c++;I++;/*************向und**************/sum=sum\c;returnsum;【参考答案】(1)错误:【参考答案】(1)错误:intsum=0.0;(2)错误:sum\=c;正确:doublesum=0.0;正确:sum/=c;下列给定程序中,函数fun的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。在main函数中,若ftm()返回1则输出“YES”,若ftm()返回0则输出“NO!”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#includc<stdio.h>intfun(intm){intk=2;while(k<=m&&(m%k))if(m=k)return1;elsereturn0;voidmain(){intn;system(nCLSH);printf(M\nPleaseentern:**);scanf(H%dH,&n);if(ftin(n))printf(,,YES\nM);elseprintfi(,,NO!\nH);【参考答案】(1)【参考答案】(1)错误:k++(2)错误:if(m=k)正确:k++;正确:if(m=k)下列给定程序中,函数fun的功能是:按如下递归公式求函数值。例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includc<stdio.h>/*************^)und**************/intfun(n)intc;if(n=l)c=10;elsec=fun(n-l)+2;retum(c);intn;printfif1Entern:");scanfC%d”,&n);printffTheresult:%d\n\nn,fun(n));}【参考答案】⑴错误:intfun(n) 正确:intfun(intn)(2)错误:if(n=l) 正确:if(n==l)下列给定程序中,函数fun的功能是:用递归算法计算斐波拉契级数列中第n项的值。从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,…例如,若给n输入7,该项的斐波拉契级数值为13。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>longfun(intg)/***************************/switch(g);{case0:return0;case1;case2:return1;return(fun(g-1)+fun(g-2));voidmain()longfib;intn;printtflnputn:");scanff%d”,&n);printf(Mn=%d\nM,n);fib=fun(n);printfi(Hfib=%d\n\nn,fib);}【参考答案】⑴错误:switch(g);正确:去掉分号⑵错误:casel;case2:return1;正确:case1:case2:return1;下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[l]中的数对调。请改正程序中的错误,使它能得出正确的结果.注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序://include#include//include#include#define<stdio.h>N20/*************向und**************/voidfun(int*a,intn);intI,m,t,kfbr(l=O;I<n;I++)/*************eund**************/m=0;fbr(k=I+l;k<n;k++)if(a[k]>a[m])m=k;t=a[I];a[I]=a[m];a[m]=t;))main()(intb[N]={11,5,1203,6,9,7J0,8},n=10,i;system(uCLSM);fbr(i=0;i<n;i-H-)printf(H%d\b[i]);printfi(,,\nH);fun(b,n);fbr(i=0;i<n;i++)printf(n%d",b[i]);printffW");}【参考答案】(1)错误:voidfiin(int*a,intn);正确:voidfun(int*a,intn)⑵错误:m=0; 正确:m=i;下列给定程序中,函数fun的功能是:将十进制正整数m转换成进制数,并按位输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)o请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#include<conio.h>voidfiin(intm,intk);{intaa[20],i;fbr(i=0;m;i-H-)/*************^Qy|-|J***♦***♦**♦**♦/aa[i]=m/k;m/=k;main()intb,n;printff'VnPleaseenteranumberandabase:\nM);scanf(M%d%dM,&n,&b);ftin(n,b);printff\n”);}【参考答案】(1)错误:voidfun(intm,intk);正确:voidfun(intm,intk)⑵错误:aa[i]=m/k;正确:aa[i]=m%k;(3)错误:printfC%d",aa[i]);正确:printf(”%d”,aa[i-l]);下列给定程序中,函数fun的功能是:计算函数F(x,y,z尸(x+y)/(x・y)+(z+y)/(z・y)的值。其中x和y不相等,z和y不等。例如,当x的值为9,y的值为U,z的值为15时,函数值为350。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includc<stdlib.h>#include<stdio.h>#includc<math.h>/*************8und**************///defineFU(m,n)(m/n)floatfiin(floata,floatb,floatc){floatvalue;value=FU(a+b,a-b)+FU(c+b,c-b);/*************tound**************/retum(Value);)voidmain(){floatx,y,z,sum;printf(HInputxyz::");scanfC'%f%f%f,&x,&y,&z);printfi(,,x=%f,y=%f,z=%f\n”,x,y,z);if(x==y||y=z){printff'Dataerror!\nexit(0);}sum=fiin(x,y,z);printf(HTheresultis:%5.2f\n”,sum);}【参考答案】(1)错误:#defineFU(m,n)(m/n)正确:#dcfineFU(m,n)(m)/(n)(2)错误:retum(Vahie);正确:return(value);下列给定程序中函数fun的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如,当s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDEo请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#includc<string.h>voidfun(char*s,char*t)|intI,sl;sl=strlcn(s);for(I=0;I<sl;I++)t[I]=s[sl-l];fbr(I=O;Ksl;R+)t[sl+I]=s[I];t[2*sl]='\0';}voidmain(){chars[100],t[100];system(nCLSH);printf(n\nPleaseenterstrings:");scanflfn%sM,s);fun(s,t);printf(MTheresultis:%s\nn,t);)【参考答案】(1)错误:t[i]=s[s1-1]; 正确:t[i]=s[s1-1-i];下列给定程序中,函数fun的功能是:求三个数的最小公倍数。例如,给变量xl、x2、x3分别输入15、11、2,则输出结果应当是330。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>intfun(intx,inty,intz){intj,t,n,m;t=m=n=1;/*************^Qund**************/while(t!=0&&m!=0&&n!=0)J=J+1;年j%x;m=j%y;n=j%z;returnj;)voidmain()(intxl,x2,x3j;printf(MInputxlx2x3:");scanf(,,%d%d%d,,,&xl,&x2,&x3);printf(Mx1=%d,x2=%d,x3=%d\nM,x1,x2,x3);j=fiin(xl,x2,x3);printf(nTheminimalcommonmultipleis:%d\n"J);}【参考答案】⑴错误:j=l; 正确:j=0;(2)错误:while(t!=0&&m!=0&&n!=0)正确:while(t!=0||m!=0||n!=0)下列给定程序中,函数ftm的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8名学生的成绩:80.5607290.59851.58864则低于平均分的学生人数为4(平均分为75.5625)o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#includc<stdio.h>#include<conio.h>#defineN20intfun(float*s,intn,float*aver){floatave,t=0.0;intcount=0,k,i;fbr(k=O;k<n;k++)t=s[k];ave=t/n;for(i=O;i<n;i-H-)if(s[i]<ave)count-H-;/*************f^)und**************/*aver=&ave;returncount;)voidmain(){floats[30],aver;intm,i;system(nCLSM);printfif^VnPleaseenterm:");scanff%d”,&m);printft^VnPleaseenter%dmark:\nM,m);for(i=0;i<m;i++)scanff%F,s+i);printff'VnThenumberofstudents:%d\nM,fun(s,m,&aver));printfi[nAve=%f\nn,aver);【参考答案】⑴错误:t=s[k]; 正确:t+=s[k];(2)错误:*aver=&ave;正确:*aver=ave;下列给定程序中,函数fim的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79o请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#include<string.h>#include<conio.h>voidfun(chars[],intn){chara[80],*p;intI;/*************8und**************/s=p;fbr(I=O;I<n;I++)a[I]=f*';do{a[I]=*p;—填空_}while(*p);a[I]=O;strcpy(s,a);voidmain(){intn;chars[80];system(nCLSM);printf(M\nEnterastring:M);gets(s);print-\nThestring:%s\nH,s);printfC'XnEntern(numberof*):*');scanff'%d”,&n);fiin(s,n);printf(”\nThestringafterinster:%s\n*',s);}【参考答案】⑴错误:s=p; 正确:p=s;⑵应填p++;或++p;或p+=l;或p=p+l;(3)错误:a[i]=。;正确:a[i]=2;或a[i]=O下列给定程序中,函数fun的功能是:删除字符串s中所有空白字符(包括Tab符、回车符及换行符)。输入字符串时用"#"结束输入。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<string.h>

#include<stdio.h>#include<ctype.h>fun(char*p){inti,t;charc[80];fbi(i=O,t=O;p[i];i++)if(!isspace(*(p+i)))c[t-H-]=p[i];c[t]=M\OH;strcpy(p,c);}voidmain(){charc,s[80];inti=0;printfif^Inputastring:'*);c=getchar();while(c!='#'){s[i]=c;i4--l-;c=getchar();}s[i]Wfiin(s);puts(s);【参考答案】⑴【参考答案】⑴错误:c[t]="\O";正确dan。,;下列给定程序中,函数fun的功能是:先从键盘上输入一个3行、3列的矩阵的各个元素的值,然后输出主对角线元素之和。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include<stdio.h>voidfun()inta[3][3],sum;intij;sum=l;for(i=0;i<3;i++){for(j=O;j<3j++)/*************Cun(j**************/scanf(M%dM,a[i]O]);}for(i=0;i<3;i++)sum=sum+a[i][i];printf(HSum=%d\nn,sum);voidmain()}【参考答案】正确:sum=0;(1)错误:正确:sum=0;(2)错误:scanf("%d",a[i][j]);正确:scanf("%d",&a[i][j]);下列给定程序中函数fun的功能是:求出字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL.,例如,当字符串中的内容为abcdabfabcdx,t中的内容为ab时,输出结果应是abcdx。当字符串中的内容为abcdabfabcdxj中的内容为abd时,则程序输出未找到的信息"Notfound!".请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<string.h>char*fun(char*s,char*t){char*p,*r,*a;/*************tound**************/a=Null;while(*s){P=s;r=t;while(*r)if(r=p){rH-;p-H-;}elsebreak;ifi(*r=,\0,)a=s;S-H-;)returna;)voidmain(){chars[100],t[100],*p;system(MCLSH);printfi[M\nPleascenterstringS:");scanf(M%s,1,s);printfiC'^nPleaseentersubstringt:");scanf(n%sM,t);p=fiin(s,t);if(p)printf(H\nTheresultis:%s\nu,p);elseprintfif'XnNotfound!\n");}【参考答案】⑴错误:a=Null; 正确:a=NULL;(2)错误:ifi[Lp){-+;p++;}正确M*r==*p){什+;p++;}下列给定程序中,函数fun的功能是:将字符串tt中的小写字母都改为对应的大写字母,其他字符不变。例如,若输入“Ab,cD”,则输出“AB,CDA请改正程序中的借误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#includc<string.h>#include<conio.h>char*fun(chartt[])intI;/***♦**♦**♦♦**mqj**************/fbr(I=O;tt[I];R+)tt[I]+=32;retum(tt);)main()(chartt[81];system(MCLS");printfi(H\nPleaseenterastring:");gets(tt);printf(M\nTheresultstringis:\n%sH,fun(tt));)【参考答案】⑴错误:||正确:&&(2)错误:tt[i]+=32 正确:tt[i『32;下列给定程序中,函数firn的功能是:计算s所指字符串中含有t所指字符串的数比并作为函数值返回。请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#include<string.h>#include<stdio.h>#defineN80intfun(char*s,char*t){intn;char*p,*r;n=0;p=&s[0];*r=t;while(*p){if(*r==*p)r-H-;if1*r=W)n-H-;/*************f^jund**************/[1];))p++;)returnn;}voidmain(){chara[N],b[N];intm;system(HCLSn);printf{n\nPlcascenterstringa:");gets(a);printfi(n\nPlcascentersubstringb:");gets(b);m=fiin(a,b);m=printf(H\nTheresultis:m=%d\n",m);}【参考答案】⑴错误:*r=t; 正确:r=t;⑵应填:r=t;或r=&t[O];下列给定程序中函数fim的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如当s中的数为87653142时,t中的数为7531。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includc<stdlib.h>#include<stdio.h>#include<conio.h>voidfun(longsjong*t){intd;longsl=l;/*************tound**************/t=0;while(s>0){d=s%10;ifi[d%2=0){*t=d*sl+*t;sl*=10;s/=10;}voidmain(){longs,t;system(,,CLS,');printfi(H\nPleaseenters:");scanf(n%ldM,&s);fun(s,&t);printf("Theresultis:%ld\n",t);)【参考答案】⑴错误:t=0; 正确:*t=0;⑵错误Md%2==0)正确:if(d%2!=0)下列给定程序中,函数fun的功能是:实现两个整数的交换。例如,给a和b分别输入60和65,输出为:a=65b=60请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>/***************************/voidfun(inta,b){intt;t=b;b=a;a=t;voidmain(){inta,b;system(MCLSH);printffEntera,b:”);scanf(M%d%dM,&a,&b);fun(&a,&b);printf(,,a=%db=%d\n",a,b);【参考答案】(1)错误:voidfun(inta,b)正确:voidfun(int*a,int*b)(2)错误:t=b;b=a;a=t;正确:t=*b;*b=*a;*a=t;下列给定程序中,函数fun的功能是:将•个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位8进制数字。例如,若输入77777,则输出将是32767,,请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#include<stdlib.h>#include<string.h>intfun(char*p)intn;/*********ftjund********/n=*p-'o';p++;while(*p!=O)♦**♦***/n=n*7+*p-,o,;p++;returnn;main()(chars[6];inti;intn;printf(MEnterastring(octaldigits):");gets(s);ifi(strlen(s)>5){printfifnError:stringtoolonger!pleaseinputagain!\n\nM);exit(O);)fbr(i=O;s[i];i-H-)if(s[i]<,O,||s[i]>,7,){printf(*'EiTor:%cnotisoctaldigits!\n\n!\n\nM,s[i]);exit(O);)printff'Theoriginalstring:**);puts(s);n=fun(s);printf(,,\n%sisconvenedtointegenumber:%d\n\nH,s,n);)【参考答案】⑴错误:n=*p」o' 正确:n=*p」0'(2)错误:n=n*7+*p-'o'正确:n=n*8+*p・'O'下列给定程序中,函数fun的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<string.h>#include<conio.h>#include<stdio.h>#defineMAXLINE20/*************'f^und**************/fun(char*pstr[6]){intI,j;char*p;fbr(I=0;I<5;I-H-){fbr(j=I+l;j<6j-H-){ifi(strcmp(*(pstr+l),pstr+j)>O){p=*(pstr+I);/*************Cund**************/*(pstr+I)=pstr+j;*(pstr+j)=p;))))voidmain(){inti;char*pstr[6],str[6][MAXLINE];system(nCLSn);fbr(i=0;iv6;i++)pstr[i]=str[i];printfi(H\nEntcr6string(1stringateachIine):\n");fbr(i=0;i<6;i++)scanff%s”,pstr[i]);fun(pstr);printfif'Thestringsaftersorting:\n");for(i=0;i<6;i++)print<M%s\nw,pstr[i]);}【参考答案】(1)错误:fiin(char*pstr[6])正确:voidfiin(char*pstr[6])(2)错误:ifi[strcmp(*(pstr+i),pstr+j)>O)正确:ifi(strcmp(*(pstr+i),*(pstr+j))>O)⑶错误:*(pstr+i)=pstr+j;正确:*(pstr+i尸*(pstr+j);下列给定的程序中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includc<stdio.h>#defineN20voidfiin(inta[],intn){intfor(j=O;j<n-lj++)/*************Cund**************/<p=jfdr(I=j;I<n;l4-+)/*****]煦?篝pDd**************/p=j;t=a[p];a[p]=a[j];}voidmain(){inta[N]={9,6,8,3,-1},i,m=5;printff排序前的数据:”);fbr(i=0;i<m;i++)printff%d”,a[i]);primffW);fiin(a,m);printf("排序后的顺序:");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");}【参考答案】⑴错误:p=j 正确:p=j;⑵错误:p=j; 正确:p=i;N个有序整数数列已放在一维数组中,给定下列程序中,函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值;反之,则返回-1。折半查找的基本算法是:每次查找前先确定数组中待杳的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下次查找范围落在中间位置之前的元素中。直到low>high,查找结束。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#defineN10voidfiin(inta[],intm){intlow=0,high=N-l,mid;while(low<=high){mid=(low+high)/2;if(m<a[mid])high=mid-l;/*************tound**************/elseif(m>=a[mid])low=mid+1;elseretum(mid);}retum(-l);)voidmain(){inti,a[N]={-3,4,7,9,13,24,67,89,100,180},k,m;printf(Ha数组中的数据如下:");fbr(i=0;i<N;i-H-)printf(M%d,',a[i]);printflt^Enterm:");scanf(H%dn,&m);k=ftin(a,m);if(k>=0)printn,,m=%d,index=%d\n,,,m,k);elseprintff'Notbefound!\nM);}【参考答案】(1)错误:voidfun(inta[],intm)正确:intfun(inta[],intm)(2)错误:elseif(m>=a[mid])正确:elseif(m>a[mid])下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#includc<conio.h>#include<stdlib.h>typedefstructaa{intdata;structaa*next;}NODE;intfun(NODE*h){intsum=0;NODE*p;p=h->next;while(p->next){ifi(p->data%2=0)sum+=p->data;/***************************/p=h->next;)returnsum;)NODE*creatlink(intn)(NODE*h,*p,*s;inti;h=p=(NODE*)malloc(sizeofi(NODE));fb«i=l;i〈n;i++)]s=(NODE*)malloc(sizeofi(NODE));s->data=rand()%16;s->next=p->next;p->next=s;p=p->next;}p->next=NULL;returnh;outlink(NODE*h){NODE*p;p=h->next;printff\n\nTheLIST:\n\nHEAD");while(p){printf("->%dn,p->data);p=p->next;}printfi(M\nM);}voidmain(){NODE*head;intsum;system(HCLSM);head=creatlink(l0);outlink(hcad);sum=fun(head);printftH\nSUM=%dn,sum);}【参考答案】(1)错误:while(p->next)正确:while(p!=NULL)(2)错误:p=h・>next;正确:p=p->next;下列给定程序中,函数fun的功能是:求表达式s=aa...aa・...-aa-aa-a(此处aa...aa表示n个a,a和n的值在1至9之间)的值。例如a=3,n=6,则以上表达式为:s=333333-33333-3333-333-33-3其值是296298。a和n是函数fun的形参,表达式的值作为函数值传回main函数。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<conio.h>#includc<stdio.h>longfiin(inta,intn)intj;/*************tound**************/longs=O,t=l;/*************tound**************/forO=Ou<=n;j++)t=t*10+a;fbr(j=l;j<n;j++)t=t%10;s=s-t;retum(s);)main()(inta,n;printfi(,,\nPleaseenteraandn:'*);scanfC%d%d”,&a,&n);printf(n\nThevalueoffunctionis%ld\nH,fun(a,n));【参考答案】(1)错误:1。叱s=O,t=l; 正确:longs=0,t=0;(2)错误:fbr(j=OJ<=n;j++)正确:for(j=O;j<n;j++)⑶错误:t=t%10; 正确:卜.列给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值。例如,若m的值为5,则应输出:1.463611。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<conio.h>#includc<stdio.h>doublefun(intm){doubley=1.0;inti;/***************************/fbr(i=2;i<m;i-H-)/***************************/y+=l/(i*i);return(y);voidmain(){intn=5;system(nCLSM);printfi[H\nTheresultis%lf\n'\fun(n));}【参考答案】⑴错误:fbr(i=2;i<m;i++)正确:for(i=2;i<=m;i++)(2)错误:y+=l/(i*i);正确:y+=1.0/(i*i);数列中,第一项为3,后一项都比前一项的值增5。下列给定程序中,函数firn的功能是:计算前项的累计和。在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数里。如当n的值为20时,该数列为3,8,13,18,23,28,…,93,98。符合此条件的累加值应为42,126,366,570,1010c请改正程序中的错误,使它能得出正确的结果.注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#defineN20intfiin(intn,int*a)/*************向und**************/{intI,j,k,sum;

sum=0;fbr(k=3,1=0;I<n;I++,k+=5){sum=sum+k;/*************f^)und**************/if(sum%4=2)a[j-H-]=sum;/*************'f^und**************/returnj;}voidmain(){inta[N],d,n,i;printflf^nEntern(4<=n<=50):");scanf(n%d'\&n);d=fun(n,a);printfCWWTheresult:\n”);fbr(i=O;i<d;i++)printf(n%6dM,a[i]);printfif'XnXn");【参考答案】(1)错误:intij,k,sum;正确:intij=0,k,sum;(2)错误:ifi(sum%4=2)正确:ifi[sum%4=2)⑶错误:returnj;正确:returnj++;下列给定程序中,函数fun的功能是:求S的值。设S=(22/(l*3))*(42/(3*5))*(62/(5*7))*...*(2k)2/((2k・l)*(2k+l))例如,当k为10时,函数的值应为1.533852。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:<stdlib.h><conio.h><stdlib.h><conio.h><stdio.h><math.h>#include#include#includc/*************tound**************/fiin(intk){intn;floats,w,p,q;n=l;s=1.0;while(n<=k){w=2.0*n;p=w-1.0;q=w+1.0;s=s*w*w/p/q;n++;)/*************Cund**************/returnsvoidmain(){system(MCLSH);printf("%ftn",fun(10));}【参考答案】(1)错误:fun(intk) 正确:doublefun(intk)⑵错误:returns正确:returns;下列给定程序中,函数firn的功能是:给定n个实数,输出平均值,并统计平均值以上(含平均值)的实数个数。例如,n=8时,输入193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值为195.838745,在平均值以上的实数个数应为5。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>intfun(floatx[],intn)/*************Cund**************/intj,c=0;floatxa=0.0;forO=0;j<n;j++)xa+=x[j]/n;printf(Mave=%f\nH,xa);for(j=O;j<n;j++)ifi[x[j]>=xa)C++;returnc;)voidmain(){floatx[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};system(',CLSM);printf(n%d\nn,fun(x,8));}【参考答案】(1)错误:缺{ 正确:加{下列给定程序中,函数fun的功能是:根据整型形参n,计算如下公式的值。Al=l,A2=1/(1+A1),A3=1/(1+A2),…,An=l/(1+A(n-1))例如,若n=10,则应输出0.617977o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>/*************8und**************/intfiin(intn){floatA=l;intI;/***************************/fbr(I=2;I<n;I++)A=1.0/(l+A);returnA;voidmain(){intn;system("CLSM);printfi(n\nPleaseentern:'*);scanfC%d”,&n);printf(,,A%d=%lf\nn,n,fun(n));}【参考答案】⑴错误:intfun(intn)正确:floatfun(intn)(2)错误:fbr(i=2;i〈n;i++)正确:for(i=2;iv=n;i++)下列给定程序中,函数fun的功能是:找出100到n(不大于1000)之间三个位上的数字都相等的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#defineN100intfun(int*s,intn)intI,j,k,a,b,c;j=0;fbr(I=100;Kn;I-H-)k=n;a=k%10;k/=10;/***************************/b=k/10;c=k/10;if(a=b&&a==c)s[j++]=I;}returnj;}voidmain()|inta[N],n,num=0,i;do(printf(n\nEntern(<=1000):M);scanfi(H%dn,&n);while(n>1000);num=fiin(a,n);printf(n\n\nTheresult:\n");fbr(i=O;i<num;i-H-)printfC%5d”,a[i]);printff\n\n");}【参考答案】⑴错误:k=n 正确:k=i;(2)错误:b=k/10;正确:b=k%10;下列给定程序中,函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如,若k=10,则应输出3628800o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<conio.h>#include<stdio.h>longfiin(intk)(ifk>lretum(k*fiin(k-1));return1;}voidmain(){intk=10;system(HCLS");printfiCn%d!=%ld\n\k,fun(k));}【参考答案】错误:ifk>l正确:if(k>l)下列给定程序中,函数fim的功能是:传入一个整数m,计算如下公式的值。例如,若输入5,则应输出・0.283333。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#includc<stdio.h>doublefun(intm)doublet=1.0;intI;fbr(I=2;l<=m;l-H-)t=1.0-1/I;voidmain(){intm;system(HCLS");printfi(n\nPleaseenter1integernumbers:\nM);scanf(M%dM,&m);printfifXnVnThcresultisfun(m));}【参考答案】(1)错误:t=l 1/i; 正确:t・=LO/i;⑵错误:;正确:returnt;下列给定函数中,函数fun的功能是:统计字符串中各元音字母(即A、E、I、O、U)的个数。注意:字母不分大小写。例如,输入THIsisaboot,则应输出是10220。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includc<stdlib.h>#include<conio.h>#includc<stdio.h>fun(char*s,intnum[5]){intk,i=5;fbr(k=0;k<i;k-H-)/***************************/num[i]=0;fbr(;*s;s-H-){i=-l;/*************8und**************/switch(s){case'a':casefA':{i=0;break;}case七':case,E,:{i=l;break;}caseT:case*r:{i=2;break;}case'o':case'O':{i=3;break;}case*u':case'U':{i=4;break;}if(i>=0)num[i]++;)voidmain(){charsl[81];intnuml[5],i;system('rCLSH);printfi(,,\nPleaseenterastring:");gets(sl);fun(sl,numl);fbr(i=0;iv5;i++)printf(H%dM,numl[i]);printfC'n”);}【参考答案】⑴错误:fun(char*s,intnum[5])正确:voidftin(char*s,intnum[5])⑵错误:num[i]=0; 正确:num[k]=0;(3)错误:switch(s)正确:switch's)下列给定程序中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#defineSIZE20fun(double*s,double*w){intk,i;doublesum;fbr(k=2,i=0;i<SIZE;i++){s[i]=k;k+=2;}sum=0.0;fbr(k=0,i=0;i<SIZE;i++){sum+=s[i];if(i+l%5==0){w[k]=sum/5;sum=0;k-H-;}returnk;}voidmain(){doublea[SIZE],b[SIZE/5];inti,k;k=fun(a,b);printf(nTheoriginaldata:\nM);fbr(i=O;i<SIZE;i++){if(i%5=0)printfi("\n");printf("%4.0f',a[i]);)printf("\n\nTheresult:\n");for(i=0;i<k;i++)printf("%6.2f',b[i]);printf("\n\n");}【参考答案】⑴错误Mi+l%5=0)正确:if((i+l)%5==0)下列给定程序中,函数fun的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>intfun(intm){intI,k;fbr(I=m+l;{for(k=2;k<I;k++)/***************************/if(I%k!=O)break;if(k<I)retum(I);)}voidmain(){intn;system(MCLSH);printfi[,'\nPleaseentern:");scanf(n%dn,&n);printf(M%d\nM,fun(n));}【参考答案】⑴错误Mi%k!=0)正确:if(i%k=O)⑵错误Mk<i)正确:if(k>=i)下列给定程序中,函数fun的功能是:计算并输出high以内最大的10个素数之和。high由主函数传给函数fun。例如high的值为100,则函数的值为732o请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<math.h>intfun(inthigh)intsum=0,n=0,j,yes;while((high>=2)&&(n<10))yes=1;for(j=2;j<=high/2;j++)/*************8und**************/ifi[high%j==O)yes=0;break)iflyes)sum+=high;n++;high-;)returnsum;voidmain()system(,,CLSH);printf(',%d\nn,fim(100));【参考答案】⑴错误:break 正确:brcak;下列给定程序中,函数fun的功能是:计算整数n的阶乘。清改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<stdio.h>doublefiin(intn)doubleresult=1.0;while(n>l&&n<170)result*=-n;return;voidmain(){intn;system(HCLSn);printsHEnteraninteger:");scanf(M%dH,&n);printftH\n\n%d!=%1g\n\n*',n,fun(n));}【参考答案】⑴错误:result*=・・n; 正确:result*=n-;(2)错误:return; 正确:returnresult;下列给定程序中,函数fun的功能是:应用递归算法求某数a的平方根。求平方根的迭代公式如下:例如,2的平方根为1.414214o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<math.h>#include<stdio.h>fiin(doublea,doublexO){doublexl,y;xl=(x0+a/x0)/2.0;/*************Cund**************/if(fabs(xl-x0)>0.00001)y=fiin(a,xl);elsey=xl;returny;}voidmain(){doublex;printfi[MEnterx:”);scanf(M%lf,,&x);printffThesquarerootof%lfis%lf\nM,x,fun(x,1.0));【参考答案】⑴错误:fUn(doublea,doublexO)正确:doublefun(doublca,doublexO)(2)错误:if(fhbs(x1-x0)>0.00001)正确:ifi(fabs(x1-x0)>=0.00001)下列给定程序中,函数fun的功能是根据输入的3个边长(整型值),判断能否构成三角形:若能构成等边三角形,则返回3,若是等腰三角形,则返回2,若能构成三角形则返回1,若不能,则返回0o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includc<stdio.h>#include<math.h>intfiin(inta,intb,intc){if(a+b>c&&b+c>a&&a+c>b){ifi[a==b&&b=c)/*************8und**************/return1;elseif(a=b||b=c||a=c)return2;/*************Cun(j**************/elsereturn3;elsereturn0;voidmain()inta,b,c,shape;printfl(H\nInputa,b,c:");scanf(n%d%d%d',,&a,&b,&c);printf(M\na=%d,b=%d,c=%d\nH,a,b,c);shape=fun(a,b,c);printff'\n\nTheshape:%d\nu,shape);)【参考答案】⑴错误:return1;正确:return3;(2)错误:return3;正确:return1;下列给定程序中,函数fun的功能是:在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。例如,调用ftm函数之前给字符串输入ABCDeFGH,调用后字符串中的内容为eABCDFGHo请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>/*************8und**************/fiin(char*p){charmax,*q;int1=0;max=p[I];while(p[l]!=0){if(max<p[I])/***************************/p=q+I;max=p[I];I++;while(q<p){*q=*(q-l);q・・;p[0]=max;}voidmain(){charstr[80];printf(HEnterastring:");gcts(str);printfi(H\nTheoriginalstring:");puts(str);fun(str);printfif^nThestringaftermoving:");puts(str);printff'\n\n");}【参考答案】(1)错误:fun(char*p)正确:voidfbn(char*p)⑵错误:p=q+i;正确:q=p+i;⑶错误:while(q<p)正确:while(q>p)下列给定程序中,函数fun的功能是:求出两个数的最大公约数,并作为函数值返回。例如,若给numl和num2输入49和21,则输出的最大公约数为7;若给numl和num2分别输入27和81,则输出最大公约数为27。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>intfun(inta,

温馨提示

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

评论

0/150

提交评论