二级C语言题库改错题.docx
- 文档编号:26567068
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:128
- 大小:47.76KB
二级C语言题库改错题.docx
《二级C语言题库改错题.docx》由会员分享,可在线阅读,更多相关《二级C语言题库改错题.docx(128页珍藏版)》请在冰豆网上搜索。
二级C语言题库改错题
1.下列给定程序中函数fun的功能是:
求出如下分数序列的前n项之和。
和值通过函数值返回。
例如,若n=5,则应输出8.391667。
请改正程序中的错误,使其得出正确的结果。
注意:
部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!
#include
/************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中,不得增行或删行,也不得更改的程序的结构!
#include
intfun(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中,不得增行或删行,也不得更改程序的结构!
#include
intfun(int*x,inty)
{
intt;
/**************found**************/
t=x;x=y;
/**************found**************/
return(y);
}
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中,不得增行或删行,也不得更改程序的结构。
#include
intfun(inta,intb)
{intr,t;
if(a
/************found************/
t=a;b=a;a=t;
}
r=a%b;
while(r!
=0)
{a=b;b=r;r=a%b;}
/************found************/
return(a);
}
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中,不得增行或删行,也不得更改的程序的结构!
#include
voidfun(longs,long*t)
{intd;
longsl=1;
/************found************/
t=0;
while(s>0)
{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中,不得增行或删行,也不得更改程序的结构。
#include
longfun(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中的内容为:
ABC DEF GHI JK。
请改正程序中的错误,使它能得出正确结果。
注意:
部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。
#include
voidfun(char*p,char*b)
{inti,k=0;
while(*p)
{i=1;
while(i<=3&&*p){
/**********found**********/
b[k]=p;
k++;p++;i++;
}
if(*p)
{
/**********found**********/
b[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中,不得增行或删行,也不得更改程序的结构!
#include
#include
char*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中,不得增行或删行,也不得更改程序的结构!
#include
#include
#defineMAXLINE20
fun(char*pstr[6])
{inti,j;
char*p;
for(i=0;i<5;i++){
/**************found**************/
for(j=i+1,j<6,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;i<6;i++)pstr[i]=str[i];
printf("\nEnter6string(1stringateachline):
\n");
for(i=0;i<6;i++)scanf("%s",pstr[i]);
fun(pstr);
printf("Thestringsaftersorting:
\n");
for(i=0;i<6;i++)printf("%s\n",pstr[i]);
}
【参考答案】
(1)for(j=i+1;j<6;j++)
(2)*(pstr+i)=*(pstr+j);
10.下列给定程序中函数fun的功能是:
计算正整数num各位上的数字之积。
例如,若输入252,则输出应该是20。
若输入202,则输出应该是0。
请改正程序中的错误,使它能得出正确的结果。
注意:
部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!
#include
longfun(longnum)
{
/************found************/
longk;
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中。
例如,若输入的数为:
55 12 34,输出的结果应当是:
a=55.0,b=34.0,c=12.0。
请改正程序中的错误,使它能得出正确的结果。
注意:
部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include
voidfun(float*a,float*b,float*c)
{
/**********found**********/
float*k;
if(*a<*b)
{k=*a;*a=*b;*b=k;}
/**********found**********/
if(*a>*c)
{k=*c;*c=*a;*a=k;}
if(*b<*c)
{k=*b;*b=*c;*c=k;}
}
main()
{floata,b,c;
printf("Inputabc:
");scanf("%f%f%f",&a,&b,&c);
printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);
fun(&a,&b,&c);
printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);
}
【参考答案】
(1)floatk;
(2)if(*a<*c)
12.下列给定程序中函数fun的功能是:
逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。
例如,若主函数中a字符串为aBCDeFgH,b字符串为ABcd,则c中的字符串应为aBcdeFgH。
请改正程序中的错误,使它能得出正确的结果。
注意:
部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!
#include
#include
voidfun(char*p,char*q,char*c)
{
/************found************/
intk=1;
/************found************/
while(*p!
=*q)
{if(*p<*q)c[k]=*q;
elsec[k]=*p;
if(*p)p++;
if(*q)q++;
k++;
}
}
main()
{chara[10]="aBCDeFgH",b[10]="ABcd",c[80]={'\0'};
fun(a,b,c);
printf("Thestringa:
");puts(a);
printf("Thestringb:
");puts(b);
printf("Theresult:
");puts(c);
}
【参考答案】
(1)intk=0;
(2)while(*p||*q)
13.下列给定程序中fun函数的功能是:
求表达式
s=aa…aa-…-aaa-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函数。
请改正程序中的错误,使它能计算出正确的结果。
注意:
部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!
#include
longfun(inta,intn)
{intj;
/**************found**************/
longs=0,t=1;
for(j=0;j t=t*10+a; s=t; for(j=1;j /**************found**************/ t=t%10; s=s-t; } return(s); } main() {inta,n; printf("\nPleaseenteraandn: "); scanf("%d%d",&a,&n); printf("Thevalueoffunctionis: %ld\n",fun(a,n)); } 【参考答案】 (1)longs=0,t=0; (2)t=t/10; 14.下列给定程序中函数fun的功能是: 从整数1到55之间,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。 规定函数中al放个位数,a2放十位数。 请改正程序中的错误,使它能得出正确的结果。 注意: 部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构! #include intfun(int*b) {intk,a1,a2,i=0; for(k=10;k<=55;k++){ /************found************/ a2=k/1O; a1=k-a2*10; if((k%3==0&&a2==5)||(k%3==0&&a1==5)) {b[i]=k;i++;} } /************found************/ returnk; } main() {inta[100],k,m; m=fun(a); printf("Theresultis: \n"); for(k=0;k } 【参考答案】 (1)a2=k/10; (2)returni; 15.下列给定程序中函数fun的功能是: 将字符串中的字符逆序输出,但不改变字符串中的内容。 例如,若字符串为abcd,则应输出: dcba。 请改正程序中的错误,使它能得出正确的结果。 注意: 部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构! #include /************found************/ voidfun(chara) {if(*a) {fun(a+1); /************found************/ printf("%c"*a); } } main() {chars[10]="abcd"; printf("处理前字符串=%s\n处理后字符串=",s); fun(s);printf("\n"); } 【参考答案】 (1)voidfun(char*a) (2)printf("%c",*a); 16.下列给定程序中函数fun的功能是: 将一个由八进制数字字符组成的字符串转换成与其面值相等的十进制整数。 规定输入的字符串最多只能包含5位八进制数字字符。 例如,若输入77777,则输出32767。 请改正程序中的错误,使它能得出正确结果。 注意: 部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。 #include intfun(char*p) {intn; /**********found**********/ n=*P-'o'; p++; while(*p! =0){ /**********found**********/ n=n*8+*P-'o'; p++; } returnn; } main() {chars[6];inti;intn; printf("Enterastring(Ocataldigits): ");gets(s); if(strlen(s)>5){printf("Error: Stringtoolonger! \n\n");exit(0);} for(i=0;s[i];i++) if(s[i]<'0'||s[i]>'7') {printf("Error: %cnotisocataldigits! \n\n",s[i]);exit(0);} printf("Theoriginalstring: ");puts(s); n=fun(s); printf("\n%sisconveredtointegernumber: %d\n\n",s,n); } 【参考答案】 (1)n=*p-′0′; (2)n=n*8+*p-′0′; 17.下列给定程序中函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 题库 改错