全国计算机二级C语言程序改错题必过.docx
- 文档编号:29997950
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:126
- 大小:91.56KB
全国计算机二级C语言程序改错题必过.docx
《全国计算机二级C语言程序改错题必过.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C语言程序改错题必过.docx(126页珍藏版)》请在冰豆网上搜索。
全国计算机二级C语言程序改错题必过
题目一前N项和问题
.以下给定程序中函数fun的功能是:
求出如下分数序列的前n项之和。
和值通过函数值返回。
例如,假设n=5,那么应输出8.391667。
请改正程序中的错误,使其得出正确的结果。
#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;
题目二SS字符串问题
2.以下给定程序中函数fun的功能是:
统计substr所指的子符串在str所指的字符串中出现的次数。
例如,假设字符串为aaas1kaaas,子字符串为as,那么应输出2。
请改正程序中的错误,使它能得出正确的结果。
#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')
题目三变量互换问题1
2.以下给定程序中函数fun的功能是:
实现两个变量值的交换,规定不允许增加语句和表达式。
例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。
请改正程序中的错误,使它得出正确的结果。
#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;
题目三变量互换问题2
1.以下给定程序中,函数fun的功能是:
实现两个整数的交换。
例如,给a和b分别输入60和65,输出为:
a=65b=60。
#include
#include
#include
/*************found**************/
voidfun(inta,b)
{intt;
/*************found**************/
t=b;b=a;a=t;
}
voidmain()
{inta,b;
system("CLS");
printf("Entera,b:
");scanf("%d%d",&a,&b);
fun(&a,&b);
printf("a=%db=%d\n",a,b);
}
(1)voidfun(int*a,int*b)
(2)t=*b;*b=*a;*a=t;
题目三变量互换问题3
2.以下给定程序中,函数fun的功能是:
将主函数中两个变量的值进展交换。
例如,假设变量a中的值为8,b中的值为3,那么程序运行后,a中的值为3,b中的值为8。
#include
/*************found**************/
voidfun(intx,inty)
{intt;
/*************found**************/
t=x;x=y;y=t;
}
voidmain()
{inta,b;
a=8;
b=3;
fun(&a,&b);
printf("%d%d\n",a,b);
}
(1)voidfun(int*x,int*y)
(2)t=*x;*x=*y;*y=t;
题目四最大公约数问题
2.以下给定程序中函数fun的功能是:
求两个非零正整数的最大公约数,并作为函数值返回。
例如,假设num1和num2分别为49和21,那么输出的最大公约数为7;假设num1和num2分别为27和81,那么输出的最大公约数为27。
#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("Themaximunmondivisoris%d\n\n",a);
(1)t=a;a=b;b=t;
(2)return(b);或returnb;
题目五长数变短数1
2.以下给定程序中函数fun的功能是:
将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数为7531。
#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)
题目五长数变短数2
2.以下给定程序中函数fun的功能是:
将长整型数中各位上为偶数的数依次取出,构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数:
8642。
#include
voidfun(longs,long*t)
{intd;
longsl=1;
*t=0;
while(s>0)
{d=s%10;
/************found************/
if(d%2=0)
{*t=d*sl+*t;
sl*=10;
}
/************found************/
s\=10;
}
}
main()
{longs,t;
printf("\nPleaseenters:
");scanf("%ld",&s);
fun(s,&t);
printf("Theresultis:
%ld\n",t);
}
(1)if(d%2==0)
(2)s/=10;
题目五长数变短数3
2.以下以下给定程序中,函数fun的功能是:
从低位开场依次取出长整型变量s中奇数位上的数,构成一个新数存放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数为7654321时,t中的数为7531。
#include
/************found************/
voidfun(longs,longt)
{longsl=10;
*t=s%10;
while(s>0)
{s=s/100;
*t=s%10*sl+*t;
/************found************/
sl=sl*100;
}
}
main()
{longs,t;
printf("\nPleaseenters:
");scanf("%ld",&s);
fun(s,&t);
printf("Theresultis:
%ld\n",t);
}
(1)voidfun(longs,long*t)
(2)sl=sl*10;
题目五长数变短数4
2.以下给定程序中函数fun的功能是:
从低位开场依次取出长整型变量s中偶数位上的数,构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数为7654321时,t中的数为642。
#include
/************found************/
voidfun(longs,longt)
{longsl=10;
s/=10;
*t=s%10;
/************found************/
while(s<0)
{s=s/100;
*t=s%10*sl+*t;
sl=sl*10;
}
}
main()
{longs,t;
printf("\nPleaseenters:
");scanf("%ld",&s);
fun(s,&t);
printf("Theresultis:
%ld\n",t);
}
(1)voidfun(longs,long*t)
(2)while(s>0)
题目五长数变短数5
1.以下给定程序中,函数fun的功能是:
将字符串s中位于奇数位置的字符或ASCII码值为偶数的字符依次放入字符串t中。
例如,字符串中的数据为"AABBCCDDEEFF",那么输出应当是"ABBCDDEFF"。
#include
#include
#include
#include
#defineN80
voidfun(char*s,chart[])
{
inti,j=0;
for(i=0;i<(int)strlen(s);i++)
/*************found**************/
if(i%2&&s[i]%2==0)
t[j++]=s[i];
/*************found**************/
t[i]='\0';
}
voidmain()
{
chars[N],t[N];
system("CLS");
printf("\nPleaseenterstrings:
");
gets(s);
fun(s,t);
printf("\nTheresultis:
%s\n",t);
}
(1)if(i%2||s[i]%2==0)或if(i%2!
=0||s[i]%2==0)
(2)t[j]='\0';或t[j]=0;
题目五长数变短数6
1.以下给定程序中,函数fun的功能是:
依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。
#include
#include
#include
voidfun(char*s)
{inti,j;
for(i=0,j=0;s[i]!
='\0';i++)
if(s[i]>='0'&&s[i]<='9')
/*************found**************/
s[j]=s[i];
/*************found**************/
s[j]=〞\0〞;
}
voidmain()
{charitem[80];
system("CLS");
printf("\nEnterastring:
");gets(item);
printf("\n\nThestringis:
%s\n",item);
fun(item);
printf("\n\nThestringofchangingis:
%s\n",item);
}
(1)s[j++]=s[i];
(2)s[j]='\0';
题目五长数变短数7
2.以下给定程序中,函数fun的功能是:
求整数x的y次方的低3位值。
例如,整数5的6次方为15625,此值的低3位值为625。
#include
longfun(intx,inty,long*p)
{inti;
longt=1;
/*************found**************/
for(i=1;i t=t*x; *p=t; /*************found**************/ t=t/1000; returnt; } voidmain() {longt,r;intx,y; printf("\nInputxandy: "); scanf("%1d%1d",&x,&y); t=fun(x,y,&r); printf("\n\nx=%d,y=%d,r=%ld,last=%ld\n\n",x,y,r,t); } (1)for(i=1;i<=y;i++) (2)t=t%1000; 题目五长数变短数8 2.给定程序MODI1.C中,fun函数的功能是: 删除b所指数组中小于10的数据。 主函数中输出删除后数组中余下的数据。 #include #include #defineN20 intfun(int*b) { /**********found**********/ intt[N],i,num for(i=0;i if(b[i]>=10) /**********found**********/ t[++num]=b[i]; /**********found**********/ for(i=0;i b[i]=t[i]; return(num); } main() {inta[N],i,num; printf("a数组中的数据: \n"); for(i=0;i printf("\n"); num=fun(a); for(i=0;i printf("\n"); } 〔1〕intt[N],i,num=0; 〔2〕t[num++]=b[i];或{t[num]=b[i];num++;} 〔3〕for(i=0;i 题目五长数变短数9 2.给定程序MODI1.C中,fun函数的功能是: 在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。 处理后原数列中首尾2个数不变。 处理后数列在主函数中输出。 例如,有10个正整数如下: 初始数列为: 657231858214538 第1组数为: 657中值为: 6替换后的数列为: 667231858214538 第2组数为: 5723中值为: 7替换后的数列为: 667231858214538 第3组数为: 72318中值为: 18替换后的数列为: 667181858214538 第4组数为: 23185中值为: 18替换后的数列为: 667181858214538 第5组数为: 1858中值为: 8替换后的数列为: 667181888214538 第6组数为: 5821中值为: 8替换后的数列为: 667181888214538 第7组数为: 82145中值为: 21替换后的数列为: 667181888214538 第8组数为: 214538中值为: 38替换后的数列为: 667181888213838 最终结果为: 667181888213838 请改正程序中指定部位的错误,使它能得出正确的结果。 #include #defineN10 intfindmid(inta,intb,intc) {intt; t=(a>b)? (b>c? b: (a>c? c: a)): ((a>c)? a: ((b>c)? c: b)); /**********found**********/ returnb; } voidfun(intx[]) {inti,a,b,c,t[N]; /**********found**********/ for(i=0;i for(i=0;i {a=t[i];b=t[i+1];c=t[i+2]; /**********found**********/ t[i+1]=findmid(a,b,c); } } main() {inti,x[N]={6,5,7,23,18,5,8,21,45,38}; for(i=0;i printf("\n"); fun(x); for(i=0;i printf("\n"); } 【参考答案】 〔1〕returnt;〔2〕for(i=0;i 〔3〕x[i+1]=findmid(a,b,c); 题目六斐波拉契数列 2.以下给定程序中函数fun的功能是: 用递归算法计算斐波拉契数列中第n项的值。 从第1项起,斐波拉契数列为: 1、1、2、3、5、8、13、21、…… 例如,假设给n输入7,那么该项的斐波拉契数值为13。 #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; 题目七链表1 1.例如,假设给a输入字符串: ABCDEFGKHIJK,调用函数后,字符数组b中的容为: ABCDEFGHIJK。 N名学生的成绩已在主函数中放入一个带头节点的链表构造中,h指向链表的头节点。 请编写函数fun,其功能是: 求出平均分,并由函数值返回。 #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++; 题目七链表2 2.以下给定程序中函数Creatlink的功能是: 创立带头结点的单向链表,并为各结点数据域赋0到m-1的值。 #include #include typedefstructaa {intdata; structaa*next; }NODE; NODE*Creatlink(intn,intm)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国计算机 二级 语言 程序 改错