您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 计算机二级c语言上机题库及答案(改错类)
1.下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。和值通过函数值返回。例如,若n=5,则应输出8.391667。请改正程序中的错误,使其得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#includestdio.h/************found************/voidfun(intn){inta,b,c,k;doubles;s=0.0;a=2;b=1;for(k=1;k=n;k++){/************found************/s=s+(Double)a/b;c=a;a=a+b;b=c;}returns;}main(){intn=5;printf(\nThevalueoffunctionis:%lf\n,fun(n));}【参考答案】(1)doublefun(intn)(2)s=s+(double)a/b;2.下列给定程序中函数fun的功能是:统计substr所指的子符串在str所指的字符串中出现的次数。例如,若字符串为aaas1kaaas,子字符串为as,则应输出2。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#includestdio.hintfun(char*str,char*substr){inti,j,k,num=0;/************found************/for(i=0,str[i],i++)for(j=i,k=0;substr[k]==str[j];k++,j++)/************found************/If(substr[k+1]=='\0'){num++;break;}returnnum;}main(){charstr[80],substr[80];printf(Inputastring:);gets(str);printf(Inputasubstring:);gets(substr);printf(%d\n,fun(str,substr));}【参考答案】(1)for(i=0;str[i];i++)(2)if(substr[k+1]==′\0′)3.下列给定程序中函数fun的功能是:实现两个变量值的交换,规定不允许增加语句和表达式。例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。请改正程序中的错误,使它得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!#includestdio.hintfun(int*x,inty){intt;/**************found**************/t=*x;*x=y;/**************found**************/return(t);}main(){inta=3,b=8;printf(%d%d\n,a,b);b=fun(&a,b);printf(%d%d\n,a,b);}【参考答案】(1)t=*x;*x=y;(2)return(t);或returnt;4.下列给定程序中函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,若num1和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输出的最大公约数为27。请改正程序中的错误,使它能得出正确结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。#includestdio.hintfun(inta,intb){intr,t;if(ab){/************found************/t=a;a=b;b=t;}r=a%b;while(r!=0){a=b;b=r;r=a%b;}/************found************/return(b);}main(){intnum1,num2,a;printf(Inputnum1num2:);scanf(%d%d,&num1,&num2);printf(num1=%dnum2=%d\n\n,num1,num2);a=fun(num1,num2);printf(Themaximuncommondivisoris%d\n\n,a);}【参考答案】(1)t=a;a=b;b=t;(2)return(b);或returnb;5.下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#includestdio.hvoidfun(longs,long*t){intd;longsl=1;/************found************/*t=0;while(s0){d=s%10;/************found************/if(d%2==0){*t=d*sl+*t;sl*=10;}s/=10;}}main(){longs,t;printf(\nPleaseenters:);scanf(%ld,&s);fun(s,&t);printf(Theresultis:%ld\n,t);}【参考答案】(1)*t=0;(2)if(d%2!=0)或if(d%2==1)6.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……例如,若给n输入7,则该项的斐波拉契数值为13。请改正程序中的错误,使它能得出正确结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。#includestdio.hlongfun(intg){/**********found**********/switch(g){case0:return0;/**********found**********/case1||case2:return1;}return(fun(g-1)+fun(g-2));}main(){longfib;intn;printf(Inputn:);scanf(%d,&n);printf(n=%d\n,n);fib=fun(n);printf(fib=%d\n\n,fib);}【参考答案】(1)去掉分号(2)case1:case2:return1;7.下列给定程序中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。例如,若给a输入字符串:ABCDEFGKHIJK,调用函数后,字符数组b中的内容为:ABCDEFGHIJK。请改正程序中的错误,使它能得出正确结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。#includestdio.hvoidfun(char*p,char*b){inti,k=0;while(*p){i=1;while(i=3&&*p){/**********found**********/b[k]=*p;k++;p++;i++;//加完之后k=4;}if(*p){/**********found**********/b[k]=;k++;}}b[k]='\0';}main(){chara[80],b[80];printf(Enterastring:);gets(a);printf(Theoriginalstring:);puts(a);fun(a,b);printf(\nThestringafterinsertspace:);puts(b);printf(\n\n);}【参考答案】(1)b[k]=*p;(2)b[k]=′′;k++;8.下列给定程序中函数fun的功能是:将tt所指字符串中的小写字母全部改为对应的大写字母,其它字符不变。例如,若输入Ab,cD,则输出AB,CD。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!#includestdio.h#includestring.hchar*fun(chartt[]){inti;for(i=0;tt[i];i++)/**********found***********/if(('a'=tt[i])&&(tt[i]='z'))/**********found***********/tt[i]-=32;return(tt);}main(){chartt[81];printf(\nPleaseenterastring:);gets(tt);printf(\nTheresultstringis:\n%s,fun(tt));}【参考答案】(1)if((tt[i]=a′)&&(tt[i]=′z′)(2)tt[i]-=32;9.下列给定程序中函数fun的功能是:用冒泡法对6个字符串进行升序排列。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!#includestdio.h#includestring.h#defineMAXLINE20fun(char*pstr[6]){inti,j;char*p;for(i=0;i5;i++){/**************found**************/for(j=i+1;j6;j++){if(strcmp(*(pstr+i),*(pstr+j))0){p=*(pstr+i);/**************found**************/*(pstr+i)=*(pstr+j);*(pstr+j)=p;}}}}main(){inti;char*pstr[6],str[6][MAXLINE];for(i=0;i6;i++)pstr[i]=str[i];printf(\nEnter6string(1stringateachline):\n);for(i=0;i6;i++)scanf(%s,pstr[i]);fun(pstr);printf(Thestringsaftersorting:\n);for(i=0;i6;i++)printf(%s\n,pstr[i]);}【参考答案】(1)for(j=i+1;j6;j++)(2)*(pstr+i)=*(pstr+j);10.下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!#includestdio.hlongfun(longnum){/************found************/Intk;do{k*=num%10;/************found************/Num/=10;}while(num);return(k);}main(){longn;printf(\nPleaseenteranumber:);scanf(%ld,&n);printf(\n%ld\n,fun(n));}【参考答案】(1)longk=1;(2)num/=10;11.下列给定程序中函数fun的功能是:把从主函数中输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。例如,若输入的数为:551234,输出的结果应当是:a=55.0,b=34.0,c=12.0。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI
本文标题:计算机二级c语言上机题库及答案(改错类)
链接地址:https://www.777doc.com/doc-2097893 .html