计算机二级上机考试(程序改错题)1
国家计算机C语言二级考试改错题库

1 下列给定程序中,函数fun 的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。
例如,当n 为5时,函数值应为10.407143。
f(x)函数定义如下:f(x)=(1)(2)0002(1)(2)0x x x x x x x x ⎧+/->⎪==⎨⎪-/-<⎩或请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include <stdlib.h> #include <conio.h> #include <stdio.h> #include <math.h>/*************found**************/ f(double x)2 下列给定程序中,fun 函数的功能是:根据形参m,计算下列公式的值:t=1+1/2+1/3+1/4+…+1/m例如,若输入5,则应输出2.283333。
3 下列给定程序中,函数fun 的功能是:分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s 输入:AaaaBBb123CCccccd,则应输出结果:upper=5,lower=9。
4 下列给定程序中函数fun 的功能是:计算正整数num 各位上的数字之积。
例如,若输入252,则输出应该是20。
若输入202,则输出应该是0。
5 下列给定程序中函数fun 的功能是:计算n!。
例如,给n 输入5,则输出120.000000。
6 下列给定的程序中,函数fun 的功能是:计算并输出k 以内最大的10个能被13或17整除的自然数之和。
k 的值由主函数传入,若k 的值为500,则函数的值为4622。
7 下列给定程序中,函数fun()的功能是:根据整型形参m 的值,计算如下公式的值:t=1-1/(22)1/(33)...1/()m m ⨯-⨯--⨯8 在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。
计算机二级上机程序改错题1-50

1、给定程序MODI1.C 中函数 fun 的功能是:计算n!。
例如,给n 输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include <stdio.h> double fun ( int n ) { double result = 1.0 ; /************found************/ if n = = 0 return 1.0 ; while( n >1 && n < 170 ) /************found************/ result *= n-- return result ; } main ( ) { int n ; printf("Input N:") ; scanf("%d", &n) ; printf("\n\n%d! =%lf\n\n", n, fun(n)) ; } 解题思路: 第一处:条件语句书写格式错误,应改为:if (n==0)。
第二处:语句后缺少分号。
2、给定程序MODI1.C 中函数fun 的功能是: 依次取出字符串中所有数字字符, 形 成新的字符串, 并取代原字符串。
请改正函数fun 中指定部位的错误, 使它能得出正确的结果。
注意: 不要改动main 函数, 不得增行或删行, 也不得更改程序的结构! 给定源程序: #include <stdio.h> void fun(char *s) { int i,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"; } main() { char item[80]; printf("\nEnter a string : ");gets(item); printf("\n\nThe string is : \"%s\"\n",item); fun(item); printf("\n\nThe string of changing is : \"%s\"\n",item ); } 解题思路: 第一处: 要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j 来控制新字符串的位置,所以应改为:s[j++]=s[i];。
全国计算机二级C语言程序改错题(-100%全中必过)

目录题目一前N项和问题 (3)题目二SS字符串问题 (4)题目三变量互换问题1 (4)题目三变量互换问题2 (5)题目三变量互换问题3 (5)题目四最大公约数问题 (6)题目五长数变短数1 (7)题目五长数变短数2 (7)题目五长数变短数3 (8)题目五长数变短数4 (9)题目五长数变短数5 (9)题目五长数变短数6 (10)题目五长数变短数7 (11)题目五长数变短数8 (11)题目五长数变短数9 (12)题目六斐波拉契数列 (13)题目七链表1 (14)题目七链表2 (15)题目七链表3 (16)题目七链表4 (17)题目八非素数问题 (19)题目九排序问题1 (19)题目九排序问题2 (20)题目九排序问题3 (21)题目九排序问题4 (22)题目九排序问题5 (23)题目九排序问题6 (24)题目九排序问题6 (25)题目九排序问题7 (26)题目十平均值问题1 (26)题目十平均值问题2 (27)题目十平均值问题3 (28)题目十平均值问题4 (29)题目十平均值问题5 (30)题目十一字符串连接1 (30)题目十一字符串连接2 (31)题目十一字符串连接3 (32)题目十一字符串连接4 (32)题目十二求和问题1 (33)题目十二求和问题2 (34)题目十二求和问题3 (35)题目十二求和问题4 (36)题目十二求和问题6 (37)题目十二求和问题7 (38)题目十二求和问题8 (39)题目十二求和问题9 (39)题目十二求和问题10 (40)题目十二求和问题11 (41)题目十二求和问题12 (42)题目十二求和问题13 (42)题目十二求和问题14 (43)题目十二求和问题15 (44)题目十二求和问题16 (44)题目十二求和问题17 (45)题目十二求和问题18 (45)题目十二求和问题19 (46)题目十三整数问题 (47)题目十四字符串逆置 (48)题目十五进制转换1 (48)题目十五进制转换2 (49)题目十六素数问题1 (50)题目十六素数问题2 (50)题目十六素数问题3 (51)题目十六素数问题4 (52)题目十六素数问题5 (53)题目十七删除字符串中指定项1 (53)题目十七删除字符串中指定项2 (54)题目十八最小公倍数问题 (55)题目十九字符串替换问题1 (55)题目十九字符串替换问题2 (56)题目二十找最长字符串 (57)题目二十一数组问题1 (58)题目二十一数组问题2 (59)题目二十一数组问题3 (60)题目二十二求平方根问题 (61)题目二十三短字符串变长字符串1 (61)题目二十三短字符串变长字符串2 (62)题目二十三短字符串变长字符串3 (63)题目二十三短字符串变长字符串4 (64)题目二十四字符串s问题1 (64)题目二十四字符串s问题2 (65)题目二十四字符串s问题3 (66)题目二十五求方程的根 (67)题目二十六求阶乘1 (68)题目二十六求阶乘2 (69)题目二十七方阵问题 (70)题目二十八查找字符串中某元素的数目 (71)题目二十九最大值问题1 (72)题目二十九最大值问题2 (72)题目二十九最大值问题3 (73)题目三十大小写转换1 (74)题目三十大小写转换2 (75)题目三十大小写转换3 (76)题目三十一:计算数字位数的问题1 (77)题目三十一:计算数字位数的问题2 (78)题目三十一:计算数字位数的问题3 (79)题目三十一:计算数字位数的问题4 (80)题目三十二统计字母数字个数问题1 (81)题目三十二统计字母数字个数问题2 (82)题目三十二统计字母数字个数问题3 (83)题目三十二统计字母数字个数问题4 (83)题目三十三对角线问题 (84)题目三十四比较字符串大小 (85)题目一前N项和问题.下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。
国家计算机等级考试(二级)上机操作题

二、基本操作题(共18分)请补充函数proc(),该函数的功能是计算下面公式SN的值:SN=1+1/3十4/5+...+2N-1/SN-1例如,当N=20时,SN=29.031674。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:#include#include#includedouble proc(int n){double s=1.0,sl=0.0;int k;for(【k=2】;k<=n;k++){sl=S;【s+=(2*k一1)/sl】}return 【s】;)void main(){int k=0:double sum;system("CLS");printf("\nPlease input N=");scanf("%d",&k);sum=proc(k);printf("\nS=%If",sum);)三、程序改错题(共24分)下列给定程序中,函数proc()的功能是根据整型形参n,计算如下公式的值:Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)例如,n中的值为l0,则应输出0.817962。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include#include#includedouble proc(int n){double y=1.0;f|****found****int J=1;.int i;for(i=2;i<=n;i++){j=-l*j;//****found****y+=1/(i*i);)return(y);)void main(){int n=10:system("CLS"):printf("\nThe result is%lf\n",proc(n));)四、程序设计题(共18分)编写一个函数,从传人的M个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。
浙江省计算机二级上机操作题(20141117)

/****考生在\n",sum);
fp=fopen("CD1.dat","wb");
fwrite(&sum,8,1,fp);
fclose(fp);
}
试题八(新)
计算 的和直到末项的绝对值小于10-10时为止。
#include <stdio.h>
fclose(fp);
}
试题二
(老)该程序功能:用冒泡法对10个整数按升序排序。
#include <stdio.h>
#define N 10
void main()
{
int i,j,min,temp;
inta[N]={5,4,3,2,1,9,8,7,6,0};
printf("\nThe array is:\n"); /*输出数组元素*/
printf("%f\n",f(1.7,b,5));
}
float f(float x, float *a, int n)
{ float y=a[0],t=1; int i;
for(i=1;i<n;i++) { t=t*x ; y=y+a[i]*t; }
return y;
}
3、程序设计题
试题一(新)
编制函数f计算下列表达式的值,函数main提供了一个测试用例。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; doublesum,x; int i;
/****考生在以下空白处写入执行语句******/
国家计算机等级考试上二级C-改错题

1 下列给定程序中函数fun()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。
例如,当s中的数为4576235时,t中的数为4725。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include#include/**********************found***********************/int fun(long s,long *t){long s1=10;*t=s ;while(s>0){/**********************found***********************/s=s 0;*t=s *s1+*t;s1=s1*10;}}main(){long s, t;clrscr();printf("\nPlease enter s: ");scanf("%ld",&s);fun(s,&t);printf("The result is: %ld\n ",t);}答案及评析:(1)错误:int fun(long s,long *t)正确:void fun(long s,long *t)(2)错误:s=s 0;正确:s=s/100;【解析】错误1:函数由指针来完成参数的传递,所以没有返回值,应定义函数的类型为void。
错误2:此处要注意特殊运算符号"%"--取余和"/"--整除的区别。
将一个数整除100则可得到由其百位数以上的数组成的新数字,将一个数整除100取余则可得到由十位数和个位数组成的新数。
2下列给定的程序中,函数fun()的功能是:计算并输出k以内最大的6个能被7或11整除的自然数之和。
K的值由主函数传入,若k的值为500,则函数的值为2925。
国家计算机C语言二级考试改错题库

1 下列给定程序中,函数fun 的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。
例如,当n 为5时,函数值应为10.407143。
f(x)函数定义如下:f(x)=(1)(2)0002(1)(2)0x x x x x x x x ⎧+/->⎪==⎨⎪-/-<⎩或请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include <stdlib.h> #include <conio.h> #include <stdio.h> #include <math.h>/*************found**************/ f(double x)2 下列给定程序中,fun 函数的功能是:根据形参m,计算下列公式的值:t=1+1/2+1/3+1/4+…+1/m例如,若输入5,则应输出2.283333。
3 下列给定程序中,函数fun 的功能是:分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s 输入:AaaaBBb123CCccccd,则应输出结果:upper=5,lower=9。
4 下列给定程序中函数fun 的功能是:计算正整数num 各位上的数字之积。
例如,若输入252,则输出应该是20。
若输入202,则输出应该是0。
5 下列给定程序中函数fun 的功能是:计算n!。
例如,给n 输入5,则输出120.000000。
6 下列给定的程序中,函数fun 的功能是:计算并输出k 以内最大的10个能被13或17整除的自然数之和。
k 的值由主函数传入,若k 的值为500,则函数的值为4622。
7 下列给定程序中,函数fun()的功能是:根据整型形参m 的值,计算如下公式的值:t=1-1/(22)1/(33)...1/()m m ⨯-⨯--⨯8 在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。
计算机二级上机考试(程序改错题)1

11、第一大类(交换类)共7道/**found**/t=*x; *x=y;/**found**/return(t);2. 程序修改(第60套)void fun(int *a,int *b)/**found**/t=*b;*b=*a;*a=t;2.程序修改(第88套)/**found**/void fun(int *x, int *y)/**found**/t=*x,*x=*y,*y=t;2、第二大类(计算类)共22道2.程序修改(第1套)求岀以下分数序列的前n 项之和。
2/1+3/2+5/3+8/5+13/8+21/13+……和值通过函数值返回main函数。
例如n=5,则应输出:。
/**foun d**/double fun (i nt n)/**foun d**/s=s+(double)a/b;2.程序修改(第6套)给定程序中函数fun的功能是:用递归算法计算列中第n 项的值。
从第一项起,斐波拉契数列为:1、1、2、3、5、8、13、21、/**found**/ switch(g)/**found**/case 1:case 2:return 1;2.程序修改(第13套)long s=0,t=0;t=t/10;2.程序修改(第21套)double f(double x)/**found**/ return s;2.程序修改(第27套)/**found**/double fun(double a,doublex0)/**found**/if(fabs(x1-x0)> 2程序修改(第29套)/**found**/#define FU(m,n) (m)/(n)return (value);2.程序修改(第33套)/**found**/for (i =2 ; i<= m; i++)/**found**/y+=1.0/ ( i* i);2.程序修改(第37套)/**found**/while((fabs(t))>=num)/**found**/t=s/n2.程序修改(第45套)/**found**//**found**/t+=i;2/**found**/result *=n__;2.程序修改(第48套)/**found**/for (i =2 ; i<= m; i++)/**found**/y+=1.0/ ( i* i);s=s +(double)(n+1)/n;/**found**/return t;2.程序修改(第52套)/**found**/int fun(int n)/**found**/if(n==1) 2.程序修改(第58套)给定程序中函数fun的功能是:求K! <k<13>,所求阶乘的值作为函数值返回。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11、第一大类(交换类)共7道/**found**/t=*x; *x=y;/**found**/return(t);2. 程序修改(第60套)void fun(int *a,int *b)/**found**/t=*b;*b=*a;*a=t;2.程序修改(第88套)/**found**/void fun(int *x, int *y)/**found**/t=*x,*x=*y,*y=t;2、第二大类(计算类)共22道2.程序修改(第1套)求岀以下分数序列的前n 项之和。
2/1+3/2+5/3+8/5+13/8+21/13+……和值通过函数值返回main函数。
例如n=5,则应输出:。
/**foun d**/double fun (i nt n)/**foun d**/s=s+(double)a/b;2.程序修改(第6套)给定程序中函数fun的功能是:用递归算法计算列中第n 项的值。
从第一项起,斐波拉契数列为:1、1、2、3、5、8、13、21、/**found**/ switch(g)/**found**/case 1:case 2:return 1;2.程序修改(第13套)long s=0,t=0;t=t/10;2.程序修改(第21套)double f(double x)/**found**/ return s;2.程序修改(第27套)/**found**/double fun(double a,doublex0)/**found**/if(fabs(x1-x0)> 2程序修改(第29套)/**found**/#define FU(m,n) (m)/(n)return (value);2.程序修改(第33套)/**found**/for (i =2 ; i<= m; i++)/**found**/y+=1.0/ ( i* i);2.程序修改(第37套)/**found**/while((fabs(t))>=num)/**found**/t=s/n2.程序修改(第45套)/**found**//**found**/t+=i;2/**found**/result *=n__;2.程序修改(第48套)/**found**/for (i =2 ; i<= m; i++)/**found**/y+=1.0/ ( i* i);s=s +(double)(n+1)/n;/**found**/return t;2.程序修改(第52套)/**found**/int fun(int n)/**found**/if(n==1) 2.程序修改(第58套)给定程序中函数fun的功能是:求K! <k<13>,所求阶乘的值作为函数值返回。
例如,若K=10,则应输出3628800。
/**found**/if(k>1)/**found**/else if(k= =0) 2.程序修改(第63套)给定程序中函数fun的功能是:计算整数n的阶乘。
/**found**/result *=n__;/**found**/return result;2.程序修改(第65套)给定程序中,函数fun的功能是:根据形参m,计算下列公式的值:t=1+1/2+1/3+1/4+ …+1/m例如,若输入5,则应输岀/**found**/double fun(int m)/**found**/for(i=100;i<=m;i+=100) 2.程序修改(第78套)/**found**/float fun(int n)/**found**/for(i=2;i<=n;i++)2.程序修改(第85套)/**found**/ t-=i;/**found**/ return t;2.程序修改(第91套)return s ;2.程序修改(第95套)/**found**/double fun(int n)/**found**/s=s+(double)a/b;2.程序修改(第96套)/**found**/{3过形参传入。
例如,当n=10时,程序的输岀结果应为。
/**found**/double fun(int n)/**found**/return sum3、第二大类(ASCII类)共4道/**fou nd**/ int k=0;/**fou nd**/ while (*p||*q)2.程序修改(第34套)给定程序中函数fun的功能/**found**/q=p+i;/**found**/while(q>p) 2.程序修改(第79套)给定程序中函数fun 的功能是:读入一个字符串(长度<20),将该字符串中的所有字符串按ASCII码升序排序后输岀。
例如,若输入edcba,则应输出:abcde。
/**found**/for(i=strlen(t)-1;i;i--)/**found**/if(t[j]>t[j+1])3、第三大类(字母类)共8道2.程序修改(第8套)/**fou nd**/if((tt[i]>=a ' )&&(tt[i]<='z')/**fou nd**/tt[ i ]- =32;2.程序修改(第19套)/**found**/ s[j++]=s[i];/**found**/s[j]= ' 0';2.程序修改(第/**found**/while(*s)/**found**/s++;2.程序修改(第64套)2.程序修改(第80套)/**found**/void fun(char *s, int num[5])/**found**/num[k]=0;/**found**/switch(*s)2.程序修改(第81套)/**found**/void fun(char *s, int *a, int *b)/**found**/(*a)++;4给定程序中函数fun的功能是:将大写字母转换为对应的小写字母之后的第5个字母,若小写字母为v〜z,使其值减21。
转换后的小写字母作为函数值返回。
例如,若形参是字母A,则转换为小写字母 f ;形参是字母W,则转换为小写字母b。
/**found**/c=c+32;/**found**/c=c+5;4、第四大类(高位或者低位类)共5道s/=10;2.程序修改(第20套)给定程序中函数fun的功能是:从低位开始取岀长整形变量s中奇数位上的数,构成一个新数存放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数为7654321时,t中的数为7531。
/**found**/ void fun(long s ,long *t)/**found**/s1=s1*10;2.程序修改(第26套)/**found**/void fun(long s ,long *t)/**found**/s1=s1*10;5、第五大类(平均类)共5道2.程序修改(第40套)2.程序修改(第83套)给定程序中函数fun的功能t+=s[k];/**found**/ *aver=ave;(m<=10)名学生来,将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
/**found**/ t=calloc(m,sizeof (STU));/**found**/t : k] =b : j ];7、第七大类(ABC类)共4道2.程序修改(第7套)给定程序中函数fun的功能是:先将s所指字符串中的字符按逆序放到t所指字符串中,然后把s所指的字符串中的字符按正序连接到t所指串的后面。
例如:当s所指的字符串为” ABCDE时,t所指的字符串应为”EDCBAABCDE/**found**/int i,s1;/**found**/t[i]=s[s1-i-1];2.程序修改(第54套)/**found**/printf ( "%c" , *a);2.程序修改(第23套)/**found**/while (*w)/**found**/if ( *r ==*p ) 2.程序修改(第54套)56a=NULL/**found**/if(*r==*p)2.程序修改(第56套)/**found**/if(*r==*p) {叶+;p++; }/**found**/if(*r==' O')2.程序修改(第76套)while(ivj)/**found**/*c='\0: 9、第九大类(单向链表类)共3 道2.程序修改(第72套)/**found**/ p=s;/**found**/s->data=rand()%(m - 1);/**found**/return h;2.程序修改(第86套)/**found**/ while (p!=NULL)/**found**/ p= p - >next;2.程序修改(第87套)/**found**/p=p->next;10、第十类(字符串类)共12道2.程序修改(第2套)/**fou nd**/for(i=0;str[i];i++)/**fou nd**/if(substr[k+1]== ' \0')2.程序修改(第9套)/**fo un d**/ for(j=i+1;j<6;j++) /**fo un d**/*(pstr+i)=*(pstr+j);2.程序修改(第16套)/**found**/n=n*8+*p- ' O';2.程序修改(第24套)/**found**/char *fun(char (*sq)[M])/**found**/return sp;2.程序修改(第30套)/**found**/n=strlen (aa);/**found**/ch =aa [i];7/**found**/r=t;/**found**/r=t;/**found**/s [j++]=s [ i ];/**found**/s [ j ]= ' \ 0 ';2.程序修改(第50套)/**found**/for(i=0,t=0;p[i];i++)/**found**/c[t]= ' \0';2.程序修改(第59套)给定程序中函数fun的功能是:将m (1三m W 10)个字符串连接起来,组成一个新串,放入pt所指存储区中。
例如,把三个/**found**/ pt[i]=str[k][i];2.程序修改(第62 套)给定程序中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。
/**found**/char *fun (char *s ,char*t)/**found**/ss++;/**found**/tt++;2.程序修改(第68套)/**found**/p=s ;/**found**/p++;/**found**/a[i]=0;2.程序修改(第75套)/**found**/for (i = 0; str[i]; i ++ ) 11、第十一类(无规则类)共27 道/**found**/t=a;a=b;b=t;/**found**/return (b);}2.程序修改(第10套)/**fo un d**/long k=1;/**fo un d**/num/=10;2.程序修改(第11套)float k ;/**fo un d**/if(*a< *c)2.程序修改(第14套)给定程序中函数fun 的功能是:从整数1到55之间,查找岀能被3整除、且有一位上的数是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。