c语言程序改错题.doc_第1页
c语言程序改错题.doc_第2页
c语言程序改错题.doc_第3页
c语言程序改错题.doc_第4页
c语言程序改错题.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序改错-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 aN,i,max,p=0; printf(please enter 10 integers:n); for(i=0;iN;i+)/*FOUND*/ scanf(%d,ai);/*FOUND*/ m=fun(a,p,N); printf(max=%d,position=%d,max,p);-错误答案: 1 int fun(int *a,int *b,int n) 2 *b=c-a; 3 scanf(%d,&ai); 4 max=fun(a,&p,N); /*-2题目:用起泡法对10个整数从小到大排序。 程序中共有4条错误语句,请改正错误。-/*FOUND*/void sort(int x,int n) int i,j,k,t; for(i=0;in-1;i+)/*FOUND*/ for(j=0;jxi+1) t=xj;xj=xj+1;xj+1=t;main() int i,n,a100; printf(please input the length of the array:n); scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); sort(a,n); printf(output the sorted array:n); for(i=0;i=n-1;i+) printf(%5d,ai); printf(n);- 错误答案: 1 void sort(int x,int n) 2 for(j=0;jj;j+) 或 for(j=0;jj;j+) 3 if(xjxj+1) 或 if(xj+1xj) -3题目:在一个已按升序排列的数组中插入一个数,插入后,数 组元素仍按升序排列。 程序中共有4条错误语句,请改正错误。#define N 11main() int i,j,t,number,aN=1,2,4,6,8,9,12,15,149,156; printf(please enter an integer to insert in the array:n);/*FOUND*/ scanf(%f,&number) printf(The original array:n); for(i=0;i=0;i-) if(number=ai)/*FOUND*/ ai=ai-1; else ai+1=number;/*FOUND*/ exit; if(numbera0) a0=number; printf(The result array:n); for(i=0;i=0;i-) 或 for(i=N-2;0=i;i-) 3 ai+1=ai; 4 break; -4【程序改错】题目:以下程序的功能是求如下表达式: S = 1 + 1/(1+2)+1/(1+2+3)+1/(1+2+3+4) 请改正程序中的错误,使程序能得到正确的运行结果。#include main() int n; float fun(); printf(Please input a number:);/*FOUND*/ printf(%d,n) ; printf(%10.6fn,fun(n);/*FOUND*/fun(int n) int i,j,t; float s; s=0;/*FOUND*/ for(i=1;i=n;i+); t=0; for(j=1;j=i;j+) t=t+j;/*FOUND*/ s=s+1/t; return s;错误答案: 1 scanf(%d,&n); 2 float fun(int n) 3 for(i=1;i=i;i+) 或 for(i=1;ii;i+) 4 s+=1.0/t 或 s=s+1.0/(float)t; 或 s=s+1.0/t; 或 s+=1.0/(float)t/*-5题目:输入一行英文文本,将每一个单词的第一个字母变成大写。例如:输入This is a C program.,输出为This Is A C Program.。-#include #include #include /*FOUND*/fun(char p) int k=0;/*FOUND*/ while(*p=0) if(k=0&*p!= ) *p=toupper(*p);/*FOUND*/ k=0; else if(*p!= ) k=1; else k=0;/*FOUND*/ *p+; main() char str81; clrscr(); printf(please input a English text line:); gets(str); printf(The original text line is :); puts(str); fun(str); printf(The new text line is :); puts(str);错误答案: 1 fun(char *p) 或 fun(char p) 2 while(*p!=0) 或 while(*p) 3 k=1; 4 p+; 或 p=1+p; 或 +p; 或 p=p+1; -6【程序改错】题目:将一个字符串中的大写字母转换成小写字母。 例如:输入aSdFG输出为asdfg。-#include/*FOUND*/char fun(char c) if(*c=A)*c-=A-a;/*FOUND*/ fun= c;main()/*FOUND*/char s81,*p=s; gets(s); while(*p) *p=fun(p);/*FOUND*/ puts(*p); p+; putchar(n);-错误答案: 1 char fun(char *c) 2 return *c; 或 return (*c); 或 return(*c); 3 char s81,*p=s; 4 putchar(*p); 或 printf(%c,*p); -7【程序改错】-题目:下列给定程序中,函数fun的功能是:判断m是否为素数,若是返回1,否则返回0。主函数的功能是:按每行5个输出1-100之间的全部素数。 请改正程序中的4个错误,使它能得出正确的结果。-main() int m,k=0; for(m=1;m100;m+) if(fun(m)=1) printf(%4d,m);k+; if(k%5=0)printf(n); /*FOUND*/void fun( int m) int i,k=1; if(m=1) k=0;/*FOUND*/ for(i=1;im;i+)/*FOUND*/ if(m%i=0) k=0;/*FOUND*/ return m;错误答案: 1 int fun( int m) 或 fun( int m) 2 for(i=2;ii;i+) 或 for(i=2;ii;i+) 3 if(m%i=0) k=0; 4 return k;-8题目:函数fun的功能是:用下面的和式求圆周率的近似值。直到最后一项的绝对值小于等于0.0001。 1 1 1 = 1 - + - + . 4 3 5 7 请改正程序中的错误,使它能得出正确的结果。-/*FOUND*/#include stdio.hfun() int i=1;/*FOUND*/ int s=0,t=1,p=1;/*FOUND*/ while(fabs(t)1e-4) 或 while(0.0001fabs(t) 或 while(1e-40.0001) 4 printf(pi=%fn,s*4); 9题目:下列给定程序中,函数fun的功能是:求1到10的阶乘的和。主函数和fun函数中,各有两个错误,请改正,使其能得到正确的运行结果。-main() int i; float t,s=0; float fac(int n);/*FOUND*/ for(i=1;i10;i+)/*FOUND*/ s=fac(i); printf(%fn,s); float fac(int n)/*FOUND*/ int y=1; int i; for(i=1 ;i=n;i+) y=y*i;/*FOUND*/ return;- 错误答案: 1 for(i=1;i=i;i+) 或 for(i=1;ii;i+) 2 s=s+fac(i); 或 s+=fac(i); 3 float y=1.0; 或 float y=1; 4 return y; 或 return(y); 或 return (y); 10题目:函数fun的功能是:求1到20的阶乘的和。请改正程序中的错误,使它能得出正确的结果。-fun() int n,j; float s=0.0,t; for(n=1;n=20;n+) /*FOUND*/ s=1; for(j=1;j=n;j+)/*FOUND*/ t=t*n;/*FOUND*/ s+t=s; /*FOUND*/ printf(jiecheng=%dn,s);main() fun();-错误答案: 1 t=1; 或 t=1.0; 2 t=t*j; 或 t*=j; 3 s=s+t; 或 s+=t; 4 printf(jiecheng=%fn,s); -11题目:函数fun的功能是:求1到20的阶乘的和。 请改正程序中的错误,使它能得出正确的结果。- fun() int n,j; float s=0.0,t; for(n=1;n=20;n+) /*FOUND*/ s=1; for(j=1;j=n;j+)/*FOUND*/ t=t*n;/*FOUND*/ s+t=s; /*FOUND*/ printf(jiecheng=%dn,s);main() fun();-错误答案: 1 t=1; 或 t=1.0; 2 t=t*j; 或 t*=j; 3 s=s+t; 或 s+=t; 4 printf(jiecheng=%fn,s); -12【程序改错】题目:函数fun的功能是:根据整型形参m的值,计算如下公式的值。 1 1 1 t = 1- - - . - 2x2 3x3 mxm 例如,若m=5,则应输出:0.536389 请改正程序中的错误,使它能得出正确的结果。-double fun(int m) double y=1.0; int i;/*FOUND*/ for(i=2;im;i-)/*FOUND*/ y-=1/(i*i);/*FOUND*/ return m;main() int n=5; printf(nthe result is %lfn,fun(n);-错误答案:1 for(i=2;i=i;i+) 或 for(i=2;im+1;i+) 或 for(i=2;ii;i+) 或 for(i=2;1+mi;i+) 2 y-=1.0/(i*i); 或 y=y-1.0/(i*i); 或 y-=1.0/(float)(i*i); 或 y=y-1.0/(float)(i*i); 或 y=y-1.0/i/i; 或 y=y-1.0/(float)i/(float)i; 3 return y; 或 return (y); 或 return(y);【程序改错】12题目:函数fun的功能是:实现交换两个整数的值。例如给a和b 分别输入3和6 ,输出为a=6 b=3 请改正程序中的4个错误,使它能得出正确的结果。-/*FOUND*/void fun (int a, b) int t;/*FOUND*/ t=a;/*FOUND*/ a=b;/*FOUND*/ b=t;main() int a,b; printf(enter a,b:);scanf(%d%d,&a,&b); fun(&a,&b); printf(a=%d b=%dn,a,b);-错误答案: 1 void fun (int *a,int *b) 或 fun (int *a,int *b) 2 t=*a; 3 *a=*b; 4 *b=t; -13【程序改错】题目:函数fun的功能是:计算并输出k以内最大的10个能被13 或17整除的自然数之和。k的值由主函数传入,若k的值 为500,则函数值为4622。 请更改程序中的错误,使它能得出正确的结果。-int fun(int k) int m=0,mc=0,j;/*FOUND*/ while (k=2)|(mc10) /*FOUND*/ if(k%13=0)|(k%17=0) m=m+k; mc+;/*FOUND*/ k+; /*FOUND*/ return ; main() printf(%dn,fun(500);-错误答案: 1 while (2=k)&(mc=2)&(10mc) 或 while (2=k)&(10=2)&(mc10) 或 while (2=k)&(mc=2)&(9=mc) 或 while (2=k)&(9=2)&(mc=9) 2 if (k%17=0)|(k%13=0) 或 if !(k%17!=0)&(k%13!=0) 3 k-; 4 return m; 或 return(m); -14【程序改错】题目:函数fun的功能是:计算正整数num的各位上的数字之积。 例如,输入252,则输出应该是20。 请改正程序中的错误,使它能得出正确的结果。-long fun (long num)/*FOUND*/ long k; do k*=num%10;/*FOUND*/ num=10; while (num); return k;main() long n; printf(nPlease enter a number:);/*FOUND*/ scanf(%ld, n);/*FOUND*/ printf(n%ldn,fun(long n);-错误答案: 1 long k=1; 2 num/=10; 或 num=num/10; 3 scanf(%ld,&n); 4 printf(n%ldn,fun(n); -15题目:函数fun的功能是:求出两个非零正整数的最大公约数, 并作为函数值返回。例如,若给num1和num2分别输入49 和21,则输出的最大公约数为7。 请改正程序中的错误,使它能得出正确的结果。-int fun(int a,int b) int r,t; if(a0) sum+=si;c+; i+; /*FOUND*/ sum=c;/*FOUND*/ return c;main() int x1000;int i=0; do scanf(%d,&xi); while(xi+!=0); printf(%fn,fun(x);错误答案: 1 double sum=0.0; 2 while(si!=0) 或 while!(si=0) 或 while!(0=si) 3 sum/=c; 或 sum=sum/c; 4 return sum; 或 return (sum); -17【程序改错】-题目:fun函数的功能是:先从键盘上输入一个3行3列矩阵的各 个元素的值,然后输出主对角线上的元素之和sum。请改正程序中的错误,使它能得出正确的结果。-#include stdio.hint fun() int a33,sum; int i,j;/*FOUND*/ a=0; for(i=0;i3;i+) for(j=0;j3;j+)/*FOUND*/ scanf(%d,aij); for(i=0;i3;i+)/*FOUND*/ sum=sum+aij;/*FOUND*/ printf(sum=%fn,sum);main() fun();-错误答案: 1 sum=0; 2 scanf(%d,&aij); 3 sum=sum+aii; 或 sum+=aii; 4 printf(sum=%dn,sum); -18【程序改错】-题目:fun函数的功能是:给定n个实数,输出平均值,并统计 在平均值以下(含平均值)的实数个数。例如,n=6时, 输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得平均值 为40.828335,在平均值以下的实数个数应为3。 请改正程序中的错误,使它能得出正确的结果。-int fun(float x,int n) int j,c=0;/*FOUND*/ float j=0;/*FOUND*/ for(j=0;j=n;j+) xa+=xj; xa=xa/n; printf(ave=%fn,xa);/*FOUND*/ for(j=0;j=n;j+) if(xj=xa) c+;/*FOUND*/ return xa;main() float x=23.5,45.67,12.1,6.4,58.9,98.4; printf(%dn,fun(x,6);错误答案: 1 float xa=0; 或 float xa=0.0; 2 for(j=0;jj;j+) 或 for(j=0;n-1=j;j+) 或 for(j=0;j=n-1;j+) 3 for(j=0;jj;j+) 或 for(j=0;j=j;j+) 4 return c; 或 return (c); -19【程序改错】fun函数的功能是:找出大于m的最小素数,并将其作为 函数值返回。 请改正程序中的错误,使它能得出正确的结果。-int fun( int m) int i,k; for(i=m+1;i+) /*FOUND*/ for(k=1;ki;k+)/*FOUND*/ if(i%k!=0) break;/*FOUND*/ if(ki)/*FOUND*/ return k; main() int n; scanf(%d,&n); printf(%dn,fun(n);-错误答案: 1 for(k=2;kk;k+) 2 if(i%k=0) break; 3 if(i=i) 或 if(k=i) 4 return i; 或 return (i); -20【程序改错】题目:fun函数的功能是:实现3行3列矩阵的转置,即行列互换。 请改正程序中的错误,使它能得出正确的结果。-fun(int a33,int m,int n) int i,j,t; for(i=0;im;i+) for(j=0;jn;j+)/*FOUND*/ scanf(%d,aij); for(i=0;im;i+) for(j=0;jn;j+) printf(%4d,aij); printf(n); for(i=0;im;i+)/*FOUND*/ for(j=0;jn;j+) /*FOUND*/ aij=t; aij=aji;/*FOUND*/ t=aji; for(i=0;im;i+) for(j=0;jn;j+) printf(%4d,aij); printf(n); main() int b33; fun(b,3,3);错误答案: 1 scanf(%d,&aij); 2 for(j=0;jj;j+) 或 for(j=0;j=j;j+) 或 for(j=i+1;jn;j+) 或 for(j=i;jn;j+) 3 t=aij; 4 aji=t; -21【程序改错】题目:fun函数的功能是:求一个3行4列矩阵的外框的元素值之 和,注意,矩阵四个角上的元素不能重复加。例如,矩阵 元素为1,2,3,4,5,6,7,8,9,10,11,12时,四 框元素值之和应为65。 请改正程序中的错误,使它能得出正确的结果。-int fun(int a34,int m,int n)/*FOUND*/ int i,j,s,s1=s2=s3=s4=0; for(j=0;jn;j+) s1=s1+a0j;/*FOUND*/ s2=s2+amj; /*FOUND*/ for(i=0;im;i+) s3=s3+ai0; s4=s4+ain-1; /*FOUND*/ s=s1+s2-s3-s4; return s;main() int a34=1,2,3,4,5,6,7,8,9,10,11,12; printf(total=%dn,fun(a,3,4);错误答案: 1 int i,j,s,s1=0,s2=0,s3=0,s4=0; 2 s2=s2+am-1j; 或 s2+=am-1j; 3 for(i=1;im-1;i+) 或 for(i=1;ii;i+) 或 for(i=1;-1+mi;i+) 或 for(i=1;i=i;i+) 4 s=s1+s2+s3+s4; 22【程序改错】题目:fun函数的功能是:实现两个字符串的连接。 例如:输入dfdfqe和12345时,则输出dfdfqe12345. 请改正程序中的错误,使它能得出正确的结果。-main() char s180,s280; void scat(char s1,char s2); gets(s1); gets(s2); scat(s1,s2); puts(s1);void scat (char s1,char s2) int i=0,j=0;/*FOUND*/ while(s1i= =0) i+;/*FOUND*/ while(s2j= =0) /*FOUND*/ s2j=s1i; i+; j+; /*FOUND*/ s2j=0; -错误答案: 1 while(s1i!=0)i+; 或

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论