a[k])/**********ERRO" />
(一)功能:用选择法对数组中的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 { d = a+b+c; /**********ERROR**********/ a=b b=c; c=d; } /**********ERROR**********/ return k; } main( ) { int n = 15; printf( "The value is: %ld\n", fun ( n ) ); } 【参考答案】 for (k=4; k<=n; k++) 【参考答案】 a=b; 【参考答案】 return d; (三)功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 #include"stdio.h" main() { int i=5; void palin(int n); printf("\40:"); palin(i); printf("\n"); } void palin(n) int n; { /**********ERROR**********/ char next if(n<=1) { /**********ERROR**********/ next!=getchar(); printf("\n\0:"); putchar(next); } else { next=getchar(); /**********ERROR**********/ palin(n); putchar(next); } } 【参考答案】 char next; 【参考答案】 next=getchar(); 【参考答案】 palin(n-1); (四) 功能:计算级数 ex=1+x+x2/2!+x3/3!+ ...+xn/n! 的值。其中xn代表x的n次方。include "stdio.h" main() { int m,n; float x,term,ex1,ex2; printf("x,m="); scanf("%f %d",&x,&m); /**********ERROR**********/ ex1==ex2=1; term=1; for(n=1;n<=m;n++) { /**********ERROR**********/ term*=x%n; ex1+=term; } ex2=term; /**********ERROR**********/ for (n=m;n>1; n--) { term*=n/x; ex2+=term; } printf("exforward=%f exbackrard=%f\n",ex1,ex2); } 【参考答案】 ex1=ex2=1; 【参考答案】 term*=x/n; 【参考答案】 for (n=m;n>=1; n--) (五)功能:用"冒泡法"对连续输入的十个字符排序后按从小到大的次序输出. define N 10 #include "stdio.h" #include "string.h" void sort(char str[N]); main( ) { int i; char str[N]; /***********ERROR***********/ for(i=0;i /***********ERROR***********/ sort(str[N]); for(i=0;i printf("%c",str[i]); printf("\n"); } void sort(char str[N]) { int i,j; char t; for(j=1;j /***********ERROR***********/ for(i=0;i /***********ERROR***********/ if(str[i] { t=str[i]; str[i]=str[i+1]; str[i+1]=t; } } 【参考答案】 for(i=0;i 【参考答案】 sort(str); 【参考答案】 for(i=0;i 【参考答案】 if(str[i]>str[i+1]) if(str[i+1] (六)【 功能:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*。 #include "stdio.h" main() { int i,a,n=1; /**********ERROR**********/ while(n<7) { do { scanf("%d",&a); } /**********ERROR**********/ while(a<1&&a>50); /**********ERROR**********/ for(i=0;i<=a;i++) printf("*"); printf("\n"); n++; } } 【参考答案】 while(n<=7) 【参考答案】 while(a<1||a>50); 【参考答案】 for(i=1;i<=a;i++) (六)功能:生成一个周边元素为5,其它元素为1的3*3的二维数组。#include "stdio.h" void fun(int arr[][3]) { /**********ERROR**********/ int i,j /**********ERROR**********/ for(i=1;i<3;i++) for(j=0;j<3;j++) /**********ERROR**********/ if(i==0&&j==0||i==2||j==2) arr[i][j]=5; else arr[i][j]=1; } main() { int a[3][3],i,j; fun(a); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%d ",a[i][j]); printf("\n"); } } 【参考答案】 int i,j; 【参考答案】 for(i=0;i<3;i++) 【参考答案】 if(i==0||j==0||i==2||j==2) (七)功能:根据整型形参m,计算如下公式的值: y=1/2+1/8+1/18+...+1/2m*m #include "stdio.h" double fun(int m) { /**********ERROR**********/ double y=0.0 int i; /**********ERROR**********/ for(i=1; i { /**********ERROR**********/ y=+1.0/(2*i*i); } return(y); } main() { int n; printf("Enter n: "); scanf("%d", &n); printf("\nThe result is %1f\n", fun(n)); } 【参考答案】 double y=0.0; 【参考答案】 for(i=1; i<=m; i++) 【参考答案】 y+=1.0/(2*i*i); (八)题目:求两个整数的最小公倍数。 注意:不可以增加或删除程序行,也不可以更改程序的结构。#include "stdio.h" main() { int a,b,i,j,t; scanf("%d,%d",&a,&b); if(a>b) t=a; else t=b; /**********ERROR**********/ for(i=t;i<=a;i++) { if(i%a==0&&i%b==0) /**********ERROR**********/ j=i;break; } printf("最小公倍数为:%d\n",j); } 【参考答案】 for(i=t;;i++) for(i=t;i<=a*b;i++) 【参考答案】 {j=i;break;} (九)功能:一个偶数总能表示为两个素数之和。#include "stdio.h" #include "math.h" main() { int a,b,c,d; /**********ERROR**********/ scanf("%d",a); for(b=3;b<=a/2;b+=2) { for(c=2;c<=sqrt(b);c++) if(b%c==0) break; if(c>sqrt(b)) /**********ERROR**********/ d=a+b; else break; for(c=2;c<=sqrt(d);c++) /**********ERROR**********/ if(d%c=0) break; if(c>sqrt(d)) printf("%d=%d+%d\n",a,b,d); } } 【参考答案】 scanf("%d",&a); 【参考答案】 d=a-b; 【参考答案】 if(d%c==0) (十)功能:编写函数fun求1000以内所有8的倍数之和。#include "stdio.h" #define N 1000 int fun(int m) { /**********ERROR**********/ int s=0;i; /**********ERROR**********/ for(i=1;i>N;i++) /**********ERROR**********/ if(i/m==0) s+=i; return s; } main() { int sum; sum=fun(8); printf("%d以内所有%d的倍数之和为:%d\n",N,8,sum); } 【参考答案】 int s=0,i; ints=0;int i; 【参考答案】 for(i=1;i 【参考答案】 if(i%m==0) (十一)功能:求1到10的阶乘的和。 #include "stdio.h" main() { int i; float t,s=0; float fac(int n); /**********ERROR**********/ for(i=1;i<10;i++) /**********ERROR**********/ s=fac(i); printf("%f\n",s); } float fac(int n) { /**********ERROR**********/ int y=1; int i; for(i=1 ;i<=n;i++) y=y*i; /**********ERROR**********/ return; } 【参考答案】 for(i=1;i<=10;i++) for(i=1;10>=i;i++) for(i=1;i<11;i++) for(i=1;11>i;i++) 【参考答案】 s=s+fac(i); s+=fac(i); s=fac(i)+s; 【参考答案】 float y=1.0; float y=1; (十二) 功能:打印出杨辉三角形(要求打印出10行). #include "stdio.h" main() { int i,j; int a[10][10]; printf("\n"); /**********ERROR**********/ for(i=1;i<10;i++) { a[i][0]=1; a[i][i]=1; } for(i=1;i<10;i++) /**********ERROR**********/ for(j=1;j<10;j++) /**********ERROR**********/ a[i][i]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<10;i++) { for(j=0;j<=i;j++) printf("%5d",a[i][j]); printf("\n"); } } 【参考答案】 for(i=0;i<10;i++) for(i=0;i<=9;i++) 【参考答案】 for(j=1;j 【参考答案】 a[i][j]=a[i-1][j-1]+a[i-1][j]; (十三)功能:编写函数fun求20以内所有5的倍数之积。 #define N 20 #include "stdio.h" main() { int sum; sum=fun(5); printf("%d以内所有%d的倍数之积为: %d\n",N,5,sum); } int fun(int m) { /**********ERROR**********/ int s=0,i; for(i=1;i /**********ERROR**********/ if(i%m=0) /**********ERROR**********/ s=*i; return s; } 【参考答案】 int s=1,i; 【参考答案】 if(i%m==0) 【参考答案】 s=s*i s=i*s s*=i (十四)功能:从键盘输入十个学生的成绩,统计最高分,最低分和平均分。 max代表最高分,min代表最低分,avg代表平均分。 #include "stdio.h" main( ) { int i; /***********ERROR***********/ float a[8],min,max,avg; printf("input 10 score:"); for(i=0;i<=9;i++) { printf("input a score of student:"); /***********ERROR***********/ scanf("%f",a); } /***********ERROR***********/ max=min=avg=a[1]; for(i=1;i<=9;i++) { /***********ERROR***********/ if(min min=a[i]; if(max max=a[i]; avg=avg+a[i]; } avg=avg/10; printf("max:%f\nmin:%f\navg:%f\n",max,min,avg); } 【参考答案】 float a[10],min,max,avg; 【参考答案】 scanf("%f",&a[i]); scanf("%f",a+i); 【参考答案】 max=min=avg=a[0]; 【参考答案】 if (min>a[i]) if (a[i] (十五)功能:编写函数fun计算下列分段函数的值: x*20 x<0且x≠-3 f(x)= sin(x) 0≤x<10且x≠2及x≠3 x*x+x-1 其它 #include "math.h" #include "stdio.h" float fun(float x) { /**********ERROR**********/ float y /**********ERROR**********/ if (x<0 || x!=-3.0) y=x*20; else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0) y=sin(x); else y=x*x+x-1; /**********ERROR**********/ return x; } main() { float x,f; printf("Input x="); scanf("%f",&x); f=fun(x); printf("x=%f,f(x)=%f\n",x,f); } 【参考答案】 float y; 【参考答案】 if (x<0 && x!=-3.0) 【参考答案】 return y; (十六)功能:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。 #include "stdio.h" void fun() { int i; float f1=1,f2=1,f3; /**********ERROR**********/ printf("%8d",f1); /**********ERROR**********/ for(i=1;i<=20;i++) { f3=f1+f2; /**********ERROR**********/ f2=f1; /**********ERROR**********/ f3=f2; printf("%8.0f",f1); } printf("\n"); } main() { fun(); } 【参考答案】 printf("%8.0f",f1); 【参考答案】 for(i=1;i<20;i++) 【参考答案】 f1=f2; 【参考答案】 f2=f3; (十七) 功能:利用二维数组输出如图所示的图形。 ******* ***** *** * *** ***** ******* #include "stdio.h" #include /**********ERROR**********/ #define N= 7 main() { char a[N][N]; int i,j,z; for(i=0;i for(j=0;j /**********ERROR**********/ a[i][j]=; z=0; for(i=0;i<(N+1)/2;i++) { for(j=z;j a[i][j]='*'; z=z+1; } /**********ERROR**********/ z=0; for(i=(N+1)/2;i { z=z-1; for(j=z;j a[i][j]='*'; } for(i=0;i { for(j=0;j /**********ERROR**********/ printf("%d",a[i][j]); printf("\n"); } }【参考答案】 #define N 7 【参考答案】 a[i][j]=' '; 【参考答案】 z=z-1; 【参考答案】 printf("%c",a[i][j]); (十八) 功能:给一个不多于5位的正整数,要求: 一、求它是几位数, 二、逆序打印出各位数字。 #include "stdio.h" main( ) { /**********ERROR**********/ long a,b,c,d,e,x, scanf("%ld",&x); a=x/10000; /**********ERROR**********/ b=x/10000/1000; c=x%1000/100; d=x%100/10; e=x%10; /**********ERROR**********/ if (a==0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b); else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c); else if (d!=0) printf("there are 2, %ld %ld\n",e,d); else if (e!=0) printf(" there are 1,%ld\n",e); } 【参考答案】 long a,b,c,d,e,x; 【参考答案】 b=x%10000/1000; 【参考答案】 if (a!=0) (十九)功能:根据整型形参 m,计算某一数据项的值。 y = 1/(100*100)+1/(200*200)+1/(300*300)+ …… +1/(m*m) 例如:若m = 2000,则应输出: 0.000160。 #include "conio.h" #include "stdio.h" /**********ERROR**********/ int fun ( int m ) { double y = 0, d ; int i ; /**********ERROR**********/ for( i = 100, i <= m, i += 100 ) { d = (double)i * (double)i ; /**********ERROR**********/ y += 1.0 \ d ; } return( y ) ; } main( ) { int n = 2000 ; printf( "\nThe result is %lf\n", fun ( n ) ) ; }【参考答案】 double fun ( int m ) 【参考答案】 for( i = 100; i <= m; i += 100 ) 【参考答案】 y += 1.0 / d ; (二十)功能:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #include "stdio.h" main() { int i,j,k; /**********ERROR**********/ printf("\n") /**********ERROR**********/ for(i=1;i<=5;i++) for(j=1;j<5;j++) for (k=1;k<5;k++) { /**********ERROR**********/ if (i!=k||i!=j||j!=k) printf("%d,%d,%d\n",i,j,k); } } 【参考答案】 printf("\n"); 【参考答案】 for(i=1;i<5;i++) 【参考答案】 if (i!=k&&i!=j&&j!=k) (二十一)功能:根据整型形参 n,计算某一数据项的值。 A[1]=1, A[2]=1/(1 + A[1]), A[3]=1/(1 + A[2]), …, A[n]=1/(1 + A[n-1]) 例如:若 n=10,则应输出:a10=0.617977。 #include "conio.h" #include "stdio.h" /**********ERROR**********/ int fun ( int n ) { float A=1; int i; /**********ERROR**********/ for (i=2; i /**********ERROR**********/ A = 1.0\(1+A); return A ; } main( ) { int n ; printf("\nPlease enter n: ") ; scanf("%d", &n ) ; printf("A%d=%f\n", n, fun(n) ) ; } 【参考答案】 float fun(int n) 【参考答案】 for (i=2; i<=n; i++) 【参考答案】 A = 1.0/(1+A); A=1.0/(A+1); A=1.0/(1.0+A); (二十二)功能:用下面的和式求圆周率的近似值。直到最后一项的绝对值小于等于0.0001。 π/4 = 1-1/3+1/5-1/7+…… ------------------------------------------------------* #include "stdio.h" /**********ERROR**********/ #include "math" void fun() { int i=1; /**********ERROR**********/ int s=0,t=1,p=1; /**********ERROR**********/ while(fabs(t)<=1e-4) { s=s+t; p=-p; i=i+2; t=p/i; } /**********ERROR**********/ printf("pi=%d\n",s*4); } main() { fun(); } 【参考答案】 #include "math.h" #include 【参考答案】 float s=0,t=1,p=1; float s=0,p=1,t=1; float p=1,s=0,t=1; float p=1,t=1,s=0; float t=1,p=1,s=0; float t=1,s=0,p=1; 【参考答案】 while(fabs(t)>1e-4) while(0.0001 while(1e-4 while(fabs(t)>0.0001) 【参考答案】 printf("pi=%f\n",s*4); ( 二十三)功能:计算并输出k以内最大的10个能被13或17整除的自然数之和。 k的值由主函数传入。 例如:若k的值为500,则函数值为4622。 #include int fun(int k) { int m=0,mc=0; /**********ERROR**********/ while ((k>=2)||(mc<10)) { /**********ERROR**********/ if((k%13=0)||(k%17=0)) { m=m+k; mc++; } /**********ERROR**********/ k++; } /**********ERROR**********/ return ; } main() { printf("%d\n",fun(500)); } 【改错1】 while((2<=k)&&(mc<10)) while((mc<10)&&(2<=k)) while((k>=2)&&(mc<10)) while((2<=k)&&(10>mc)) while((k>=2)&&(10>mc)) while((mc<10)&&(k>=2)) while((10>mc)&&(2<=k)) 程序改错------------------------------------- 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语言题库 程序改错(部分)