【程序改错】
--------------------------------------------------------
功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
------------------------------------------------------*/
#include
#define N 11
main()
{
int i,number,a[N]={1,2,4,6,8,9,12,15,149,156};
printf("please enter an integer to insert in the array:\n");
/**********FOUND**********/
scanf("%d",&number)
printf("The original array:\n");
for(i=0;i printf("%5d",a[i]); printf("\n"); /**********FOUND**********/ for(i=N-1;i>=0;i--) if(number<=a[i]) /**********FOUND**********/ a[i]=a[i-1]; else { a[i+1]=number; /**********FOUND**********/ exit; } if(number printf("The result array:\n"); for(i=0;i printf("%5d",a[i]); printf("\n"); } 答案: =======(答案1)======= scanf("%d",&number); =======(答案2)======= for(i=N-2;i>=0;i--) =========或========= for(i=N-2;0<=i;i--) =======(答案3)======= a[ i + 1 ]=a[i]; =======(答案4)======= break; 五、程序改错共1题(共计10分) ━━━━━━━━━━━━━━━━ 第1题(10.0分) /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:编写函数fun求20以内所有5的倍数之积。 ------------------------------------------------------*/ #include #define N 20 int fun(int m) { /**********FOUND**********/ int s=0,i; for(i=1;i /**********FOUND**********/ if(i%m=0) /**********FOUND**********/ s=*i; return s; } main() { int sum; sum=fun(5); printf("%d以内所有%d的倍数之积为:%d\n",N,5,sum); } 答案: =======(答案1)======= int s=1 , i ; =======(答案2)======= if(i%m==0) =======(答案3)======= s=s*i; =========或========= s=i*s; =========或========= s*=i; 五、程序改错共1题(共计10分) ━━━━━━━━━━━━━━━━ 第1题(10.0分) /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:求100以内(包括100)的偶数之和. ------------------------------------------------------*/ #include main() { /**********FOUND**********/ int i,sum=1; /**********FOUND**********/ for(i=2;i<=100;i+=1) sum+=i; /**********FOUND**********/ printf("Sum=%d \n";sum); } 答案: =======(答案1)======= int i,sum=0; =======(答案2)======= for(i=2;i<=100;i+=2) =======(答案3)======= printf("Sum=%d \n",sum); 【程序改错】 -------------------------------------------------------- 功能:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 ------------------------------------------------------*/ #include main() { char c; int letters=0,space=0,digit=0,others=0; printf("please input some characters\n"); /**********FOUND**********/ while((c=getchar())=='\n') { /**********FOUND**********/ if(c>='a'&&c<='z'&&c>='A'&&c<='Z') letters++; /**********FOUND**********/ else if(c=!' ') space++; else if(c>='0'&&c<='9') digit++; else others++; } printf("all in all:char=%d space=%d digit=%d others=%d\n",letters, space,digit,others); } 答案: =======(答案1)======= while((c=getchar())!='\n') =======(答案2)======= if( c>='a'&&c<='z' || c>='A'&&c<='Z' ) =========或========= if( c<='z'&&c>='a' || c>='A'&&c<='Z' ) =========或========= if( c <= 'z' && c >= 'a' || c >= 'A' && c<='Z' ) =======(答案3)======= else if(c==' ') 【程序填空】 --------------------------------------------------------- 功能:要求输出如下结果: b=-1 a=65535 a=65534 a=30 b=6 c=5 按要求在空中填入合适的变量完善程序。 -------------------------------------------------------*/ #include main() { /***********SPACE***********/ int b=-1,【?】;unsigned a; /***********SPACE***********/ a=【?】; printf("b=%d a=%u\n",b,a); /***********SPACE***********/ 【?】+=b; printf("a=%u\n",a); /***********SPACE***********/ b=(a=30)/【?】; printf("a=%d b=%d c=%d\n",a,b,c); } 答案: =======(答案1)======= c =======(答案2)======= b =======(答案3)======= a =======(答案4)======= (c=5) 程序改错】 -------------------------------------------------------- 功能:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。 ------------------------------------------------------*/ #include #include int length(p) char *p; { int n; n=0; /**********FOUND**********/ while(*p=='\0') { n++; p++; } return n; } main() { int len; /**********FOUND**********/ char *str[20]; printf("please input a string:\n"); scanf("%s",str); /**********FOUND**********/ len==length(str); printf("the string has %d characters.",len); } 答案: =======(答案1)======= while(*p!='\0') =========或========= while(*p) =========或========= while(*p!=0) =========或========= while(*p!=NULL) =======(答案2)======= char str[20]; =======(答案3)======= len=length(str); 【程序改错】 -------------------------------------------------------- 功能:输入10个数,要求输出这10个数的平均值 ------------------------------------------------------*/ #include double average(double array[10]) { int i; double aver,sum=array[0]; /***********FOUND***********/ for(i=0;i<10;i++) sum=sum+array[i]; aver=sum/10.0; return(aver); } main( ) { /***********FOUND***********/ int score[10],aver ; int i; printf("input 10 scores:\n"); for(i=0;i<10;i++) /***********FOUND***********/ scanf("%f", score); printf("\n"); /***********FOUND***********/ aver=average(score[10]); printf("average score is %5.2f",aver); } 答案: =======(答案1)======= for(i=1;i<10;i++) =========或========= for(i=1;i<=9;i++) =======(答案2)======= float score[10],aver; =========或========= float aver,score[10]; =========或========= double score[10],aver; =========或========= double aver,score[10]; =======(答案3)======= scanf("%f", &score[i]); =========或========= scanf("%f", score+i); =======(答案4)======= aver=average(score); 【程序改错】 -------------------------------------------------------- 功能:八进制转换为十进制。 ------------------------------------------------------*/ #include main() { /**********FOUND**********/ char p,s[6]; int n; p=s; gets(p); /**********FOUND**********/ n==0; /**********FOUND**********/ while(*(p)=='\0') { n=n*8+*p-'0'; p++; } printf("%d",n); } 答案: =======(答案1)======= char *p,s[6]; =======(答案2)======= n=0; =======(答案3)======= while(*(p)!='\0') 程序改错------------------------------------- 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) 【程序改错】 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; kc语言程序改错题
C语言程序改错及填空题
c语言程序改错
C语言程序改错2
C语言程序改错题
程序改错完整版---C语言
齐齐哈尔大学C语言题库 程序改错(部分)