题号:1
题目:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列
/************FOUND***********/
a[i]=a[i-1];
/************FOUND***********/
exit;}
正确答案:a[i+1]=a[i];
break;}
题号:2
题目:以下程序的功能是求如下表达式:
/************FOUND***********/
print("%d",n) ;
/************FOUND***********/
fun(int n)
正确答案:scanf(“%d”,&n);
float fun(int n)
题号:3
题目:函数fun的功能是:根据整型形参m的值,计算如下公式的值。
/**********FOUND**********/
y-=1/(i*i);
/**********FOUND**********/
return m;
正确答案:y-=1.0/(i*i);
return c;
题号:4
题目:以下程序把一由小到大的有序数列放在a[1]到a[n]中,a[0]用做工作单元,程序把读入的x值插入到a数组中,插入后,数组中的数仍有序。
/************FOUND***********/
{ a[i]=a[i+1];
/************FOUND***********/
for(i=0;i<=n;i++)
正确答案:{ a[i+1]=a[i];
for(i=1;i<=n;i++)
题号:5
题目:函数scopy的功能是:将一个字符串前面n个子字符送到一个字符型数组中去
,然后再加上一个'\0'。不用系统提供的函数strcpy。请改正程序中的2个错误,使它能得出正确的结果。
/**************FOUND**************/
scanf("%d",n);
/**************FOUND**************/
scopy(str1,str2);
正确答案:scanf("%d",&n);
scopy(str1,str2,n);
题号:6
题目:函数fun的功能是:求n!。主函数的功能是计算: x!+y!+z!的值。请改正程
序中的错误,使它能得出正确的结果。
/**********FOUND**********/
scanf("%d,%d,%d",x,y,z);
/**********FOUND**********/
printf("Sum=%d\ n",sum);
正确答案:scanf("%d,%d,%d",&x,&y,&z);
printf("Sum=%ld\ n",sum);
题号:7
题目:编写函数fun求整数n以内(不包括n)3的倍数之和,在main函数中由键盘输
入n值,并输出运算结果。
/**********FOUND**********/
scanf("%d",n);
/**********FOUND**********/
result=fun( );
正确答案:scanf("%d",&n);
result=fun(n);
题号:8
题目:函数fun的功能是:求1到20的阶乘的和。
/**********FOUND**********/
s+t=s;
/**********FOUND**********/
printf("jiecheng=%d\n",s);
正确答案:s+=t;
printf("jiecheng=%f\n ",s);
题号:9
题目:函数fun的功能是:输出Fabonacci数列的前20项,要求变量类型定义成浮点
型,输出时只输出整数部分,输出项数不得多于或少于20。
/************FOUND***********/
f2=f1;
/************FOUND***********/
f3=f2;
正确答案:f1=f2;
f2=f3;
题号:10
题目:函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之
和。k的值由主函数传入,若k的值
为500,则函数值为4622。
/**********FOUND**********/
while ((k>=2)||(mc<10))
/**********FOUND**********/
if((k%13=0)||(k%17=0))
正确答案:while ((2<=k)&&(mc<10))
if((k%17==0)||(k%13==0))
题号:11
题目:函数fun的功能是:计算正整数num的各位上的数字之积。
/**********FOUND**********/
scanf("%ld", n);
/**********FOUND**********/
printf("\n%ld\n",fun(long n));
正确答案:scanf("%ld", &n);
printf("\n%ld\n",fun(n));
题号:12
题目:函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回
。例如,若给num1和num2分别输入49和21,则输出的最大公约数为7。
/************FOUND***********/
r=a/b;}
/************FOUND***********/
return a;
正确答案:r=a%b;}
return b;
题号:13
题目:在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个
元素中。下列给定程序中,函数fun的功能是:计算数组元素中值为正数的平均值(
不包括0)。
/************FOUND***********/
int sum=0.0;
/************FOUND***********/
while(s[i] =0)
正确答案:double sum=0.0;
while(s[i] !=0)
题号:14
题目:fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后
输出主对角线上的元素之和sum。
/**********FOUND**********/
a=0;
/**********FOUND**********/
scanf("%d",a[i][j]);
正确答案:sum=0;
scanf("%d",&a[i][j]);
题号:15
题目:fun函数的功能是:实现3行3列矩阵的转置,即行列互换。
/**********FOUND**********/
a[i][j]=t;
/**********FOUND**********/
t=a[j][i];
正确答案:t=a[j][i];
a[i][j]=t;
题号:16
题目:fun函数的功能是:求一个3行4列矩阵的外框的元素值之和矩阵元素为1,2
,3,4,5,6,7,8,9,10,时……
/**********FOUND**********/
int i,j,s,s1=s2=s3=s4=0;
/**********FOUND**********/
s2=s2+a[m][j];
正确答案:int i,j,s,s1=0,s2=0,s3=0,s4=0;
s2=s2+a[m-1][j];
题号:17
题目:以下程序输出前六行杨辉三角形,既
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
…………
…………
/***********FOUND***********/
if(j==0&&j==i)
/***********FOUND***********/
a[i][j]=a[i-1][j-1]+a[i][j-1];
正确答案:if(j==0||j==i)
a[i][j]=a[i-1][j-1]+a[i-1][j];
题号:18
题目:fun函数的功能是:实现两个字符串的连接。例如:输入dfdfqe和12345时,
则输出dfdfqe12345.
/**********FOUND**********/
s2[j]=s1[i];
/**********FOUND**********/
s2[j]='\ 0';
正确答案:s[i]=s2[j];
s1[i]='\0';
题号:19
题目:fun函数的功能是:给定n个实数,输出平均值,并统计在平均值以下(含平
均值)的实数个数。
/**********FOUND**********/
for(j=0;j<=n;j++)
/**********FOUND**********/
return xb;
正确答案:for(j=0;j return c; 题号:20 题目:fun函数的功能是:找出大于m的最小素数,并将其作为函数值返回。 /**********FOUND**********/ for(k=1;k /**********FOUND**********/ if(i%k!=0) break; 正确答案:for(k=2;k if(i%k= =0) break; 题号:21 题目:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例 如:当s所指的字符串的内容为"ABCD"时,t所指数组中的内容为"DCBAABCD"。/**********FOUND**********/ void fun (char s, char t) /**********FOUND**********/ d = len(s); 正确答案:void fun (char s[], char t[]) d = strlen(s); 题号:22 题目:有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前 面的元素即第一个数对换位置. /***********FOUND***********/ scanf("%d", a[i]); /***********FOUND***********/ for(i=3;i<10;i++) 正确答案:scanf("%d", &a[i]); for(i=1;i<10;i++) 题号:23 题目:有一数组内放10个整数,要求求出所有元素的平均值. /***********FOUND***********/ for(i=0;i<10;i++) /***********FOUND***********/ int score[10],aver ; 正确答案:for(i=1;i<10;i++) float score[10],aver ; 题号:24 题目:一个已排好序的一维数组,输入一个数number,要求按原来排序的规律将它插入数组中. /***********FOUND***********/ if(number>end) a[11]=number; /***********FOUND***********/ if(a[i] 正确答案:f(number>end) a[10]=number; if(a[i]>number) 题号:25 题目:用"起泡法"对输入的十个字符排序后按从小到大的次序输出. /***********FOUND***********/ scanf("%s",&str); /***********FOUND***********/ sort(str[N]); 正确答案:scanf("%s",str); sort(str); 题号:26 题目:函数fun的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。例如,在主函数中从键盘给n输入20后,输出为:s=0.583333。注意:要求n的值不大于100。 /**************FOUND********** float s; /**************FOUND********** scanf("%d",n); 正确答案:double s; scanf("%d",&n); 题号:27 题目:下面的函数delete(s,i,n)可用来从字符串中删除第i个字符开始的n个字符/**********FOUND**********/ void delete (char s[],int i,n) /**********FOUND**********/ { int j,length,k; 正确答案void delete (char s[],int i,int n) { int j,length=0,k; 题号:4 题目:函数fun的功能是:计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。 /**********FOUND**********/ fun (int n) /**********FOUND**********/ sum=0.0; /**********FOUND**********/ for(k=0;k<=n;k++) /**********FOUND**********/ return s0; 正确答案:double fun (int n) 正确答案:sum=1.0; 正确答案:for(k=4;k<=n;k++) 正确答案:return sum; 程序改错------------------------------------- 1题目:在一个一维整型数组中找出其中最大的数及其下标。 程序中共有4条错误语句,请改正错误。 -----------------*/ #define N 10 /**********FOUND**********/ float fun(int *a,int *b,int n) { int *c,max=*a; for(c=a+1;cmax) { max=*c; /**********FOUND**********/ b=c-a;} return max; } main() { int a[N],i,max,p=0; printf("please enter 10 integers:\n"); for(i=0;i 下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。 #define NULL 0 struct stud { long num; char name[10]; float score; struct stud *next; }; /* …………… comment …………… */ int n; struct stud create() 序中有两处错误代码,请改正.注意,不得改变程序结构。 #include <> main() { int a[8],*p=a; int i,j; int tempmin,tempcode; printf("\n input the numbers:\n"); for (i=0;i<8;i++) scanf("%d",p+i); tempmin=*p; for (i=0;i<7;i++) { for (j=i;j<8;j++) if (j==i||*(p+j) C语言改错题库 目录 C语言改错题库 (1) 从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。 (3) 2.求一维数组a中的值为偶数的元素之和。 (3) 3.求二维数组a中的最大值。 (4) 5.猴子第一天摘下若干桃子 (5) 6. 将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。 (5) 7.求出a所指数组中最大数(规定最大数不在a[0]中),最大值和a[0]中的数对调。 (6) 8.输出200~300之间的所有素数,要求每行输出8个素数。 (6) 9.打印九九乘法表 (6) 10.输出100~200之间既不能被3整除也不能被7整除的整数并统计这些整数的个数,要求每行输出8个数。 (7) 10.输出100~200之间既不能被3整除也不能被7整除的整数并统计这些整数的个数,要求每行输出8个数。 (7) 11.打印输出以下图形 (8) 12.求:1!+2!+3!+ ...... + 20! (8) 13.输入一个百分制成绩,打印出五级记分成绩。 (8) 14.求一维数组a中值为奇数的元素的平均值。 (9) 15.将[m,n]之间的所有素数存放到一维数组a中,并输出。 (9) 16.求一维数组a中所有元素的平均值。 (10) 17.将[2,100]之间的所有素数存放到一维数组a中,并输出这些素数。 (10) 18.求一维数组a中所有元素的平均值,结果保留两位小数。 (11) 19. 当M为5时,如果从键盘上输入的5个数 (11) 20. 在第一个循环中给a数组的前10个数组元素 (12) 21. 把数组a(大小为M)中前M-1个元素中的最大值放入a的最后一个元素中。 (12) 22.求排列组合的值 (12) 23. 计算正整数num的各位上的数字之和。 (13) 24.从键盘上输入一个正整数n,计算并输出n的阶乘。 (13) 25.从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数. 例如:从键盘上输入2345, (14) 26. 求一维数组a中素数的个数。 (14) 27.输出Fabonacci数列:1,1,2,3,5,8,......的前20项的值,要求每行输出5个数。 .. (15) 28.求一维数组a中非素数之和。 (15) 29.求两个正整数m,n之间的非素数之和(包含m和n)。 (16) 30.将无符号八进制数字构成的字符串转换为十进制整数。 (16) 31.计算1到M(M为100)之间的奇数之和及偶数之和。 (16) 32.实现在N行M列的二维数组中,找出每一行上的最大值,且原数组值不变。 (17) 【程序改错】 1.功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序 打印出来。 char next; next=getchar(); palin(n-1); 2.功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,…… 项值通过函数值返回 main ( )函数。 例如:若 n = 15,则应输出:The value is: 2209。 for (k=4; k<=n; k++) a=b; return d; 3.功能:根据整型形参m,计算如下公式的值: y=1/2+1/8+1/18+...+1/2m*m double y=0.0; 4.功能:编制统计营业员一天的营业额的程序,设程序采用一个循环 实现,每次循环输入一笔交易金额并累计营业额。由于营 业员一天完成的交易次数是不确定的,为此以最后附加输 入一笔0或负数交易额作为交易金额已全部输入结束的标志。 float sale,sigma; scanf("%f",&sale); sigma=sigma+sale; 5.功能:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*。while(n<8) while(a<1||a>50); for(i=0;i 1、以下程序的功能是求如下表达式: 1 1 1 S = 1 + ——+ ———+ ...... + ——————— 1+2 1+2+3 1+2+3+......+n 『答案』:1 scanf("%d",&n); 2 float fun(int n) 3 for(i=1;i<=n;i++) 4 s+=1.0/t 或s= s + 1.0 /t; 2、题目:函数fun的功能是:根据整型形参m的值,计算如下公式的值。 1 1 1 t = 1- ——- ——- ... - —— 2x2 3x3 mxm 例如,若m=5,则应输出:0.536389 『答案』:1 for(i=2;i<=m;i++)或for(i=2;i 第12次上机程序改错第1题 【程序改错】 -------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。 例如:输入圆的半径值:19.527 输出为:s = 598.950017。 ------------------------------------------------------*/ #include printf ( "Enter x: "); scanf ( "%f", &x ); printf (" s = %f\n ", fun ( x ) ); } 第2题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include (一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。#include "stdio.h" #define N 20 void fun(int a[], int n) { int i, j, t, k; for (j = 0 ;j < n-1 ;j++) { /**********ERROR**********/ k = j for (i = j+1;i < n; i++) /**********ERROR**********/ if(a[i] >a[k]) /**********ERROR**********/ k=j; t = a[k] ; a[k] = a[j] ; a[j] = t; } } main() { int a[N]={9,6,8,3,-1},i, m = 5; printf("排序前的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); fun(a,m); printf("排序后的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); } 【参考答案】 k = j; 【参考答案】 if(a[i] < a[k]) if(a[k] > a[i]) 【参考答案】 k = i; (二)功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,…… 项值通过函数值返回 main ( )函数。 例如:若 n = 15,则应输出:The value is: 2209。 #include "conio.h" #include "stdio.h" long fun ( int n ) { long a=1, b=1, c=1, d=1, k; /**********ERROR**********/ for (k=4; k C语言改错题常见错误归纳 一、书写错误 1:mian→(main)见例一 2:print→(printf) 3:include 五、赋值错误 1:未赋初值。如求和时一般sum=0,求阶乘时一般n=1。见例一 2:注意题中赋值是否正确。如究竟i是赋1还是0。见例五 六、大小关系错误 1:大于号和小于号与所求程序不符。见例一 2:是否携带等号<=,>= 七、返回值错误 1:在子函数中,return (i)i 是要返回到主函数的值。 2:在子函数中,return(1)返回主函数是执行后yes 的结果,return(0) 返回执行后no的结果。见例二 3:一般在主函数中很少涉及返回值的错误 八、其他错误 1、参数未定义:程序中出现的任何变量i或常量j=1,都要定义他们的类型。 2、等号与赋值弄混好:==为等号,=为赋值号。见例二 3、与scanf搭配未加地址符, 也不可加\n换行符在d 后面,scanf(“%d”,&i); 4、行末未加分号,每行后面需要分号。 5、子函数中形参为定义好。见例六 经典例题c语言程序改错题
C语言程序改错及填空题
C语言改错题库
c语言程序改错
C语言程序改错2
C语言程序改错题
程序改错完整版---C语言
C语言常见改错
齐齐哈尔大学C语言题库 程序改错(部分)