收藏 分销(赏)

c语言程序改错题.doc

上传人:丰**** 文档编号:3066162 上传时间:2024-06-14 格式:DOC 页数:14 大小:82KB 下载积分:8 金币
下载 相关 举报
c语言程序改错题.doc_第1页
第1页 / 共14页
c语言程序改错题.doc_第2页
第2页 / 共14页


点击查看更多>>
资源描述
程序改错 ------------------------------------- 1题目:在一个一维整型数组中找出其中最大的数及其下标。 程序中共有4条错误语句,请改正错误。 -----------------*/ #define N 10 /**********FOUND**********/ float fun(int *a,int *b,int n) { int *c,max=*a; for(c=a+1;c<a+n;c++) if(*c>max) { 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<N;i++) /**********FOUND**********/ scanf("%d",a[i]); /**********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",&a[i]); 4 max=fun(a,&p,N); /*----------------------------------- 2题目:用起泡法对10个整数从小到大排序。 程序中共有4条错误语句,请改正错误。 ------------------------------------- /**********FOUND**********/ void sort(int x,int n) { int i,j,k,t; for(i=0;i<n-1;i++) /**********FOUND**********/ for(j=0;j<n-i;j++) /**********FOUND**********/ if(x[i]>x[i+1]) { t=x[j];x[j]=x[j+1];x[j+1]=t;} } main() { int i,n,a[100]; printf("please input the length of the array:\n"); scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,n); printf("output the sorted array:\n"); for(i=0;i<=n-1;i++) printf("%5d",a[i]); printf("\n"); } ------------------------------------- 『错误答案』: 1 void sort(int x[],int n) 2 for(j=0;j<n-1-i;j++) 或 for(j=0;n-1-i>j;j++) 或 for(j=0;j<n-(1+i);j++) 或 for(j=0;n-(1+i)>j;j++) 3 if(x[j]>x[j+1]) 或 if(x[j+1]<x[j]) ------------------------------------- 3题目:在一个已按升序排列的数组中插入一个数,插入后,数 组元素仍按升序排列。 程序中共有4条错误语句,请改正错误。 #define N 11 main() { int i,j,t,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("%f",&number) printf("The original array:\n"); for(i=0;i<N-1;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<a[0]) a[0]=number; printf("The result array:\n"); for(i=0;i<N;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;} ------------------------------------ 4【程序改错】 题目:以下程序的功能是求如下表达式: S = 1 + 1/(1+2)+1/(1+2+3)+ 1/(1+2+3+4)… 请改正程序中的错误,使程序能得到正确的运行结果。 #include <stdio.h> main() { int n; float fun(); printf("Please input a number:"); /**********FOUND**********/ printf("%d",n) ; printf("%10.6f\n",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<=n;i++) 或 for(i=1;n>=i;i++) 或 for(i=1;i<n+1;i++) 或 for(i=1;n+1>i;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 <string.h> #include <stdio.h> #include <conio.h> /**********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 str[81]; 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<stdio.h> /**********FOUND**********/ char fun(char c) { if(*c<='Z'&&*c>='A')*c-='A'-'a'; /**********FOUND**********/ fun= c; } main() /**********FOUND**********/ char s[81],*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 s[81],*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;m<100;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;i<m;i++) /**********FOUND**********/ if(m%i=0) k=0; /**********FOUND**********/ return m; } 『错误答案』: 1 int fun( int m) 或 fun( int m) 2 for(i=2;i<m;i++) 或 for(i=2;m>i;i++) 或 for(i=2;i<=m-1;i++) 或 for(i=2;m-1=>i;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.h" fun() { int i=1; /**********FOUND**********/ int s=0,t=1,p=1; /**********FOUND**********/ while(fabs(t)<=1e-4) { s=s+t; p=-p; i=i+2; t=p/i; } /**********FOUND**********/ printf("pi=%d\n",s*4); } main() { fun(); } 『错误答案』: 1 #include "math.h" 2 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; 3 while(fabs(t)>1e-4) 或 while(0.0001<fabs(t)) 或 while(1e-4<fabs(t)) 或 while(fabs(t)>0.0001) 4 printf("pi=%f\n",s*4); 9题目:下列给定程序中,函数fun的功能是:求1到10的阶乘的和。主函数和fun函数中,各有两个错误,请改正,使其能得到正确的运行结果。 -------------------------------------main() { int i; float t,s=0; float fac(int n); /**********FOUND**********/ for(i=1;i<10;i++) /**********FOUND**********/ s=fac(i); printf("%f\n",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<=10;i++) 或 for(i=1;10>=i;i++) 或 for(i=1;i<11;i++) 或 for(i=1;11>i;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=%d\n",s); } main() { fun(); } -------------------------------------『错误答案』: 1 t=1; 或 t=1.0; 2 t=t*j; 或 t*=j; 3 s=s+t; 或 s+=t; 4 printf("jiecheng=%f\n",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=%d\n",s); } main() { fun(); } -------------------------------『错误答案』: 1 t=1; 或 t=1.0; 2 t=t*j; 或 t*=j; 3 s=s+t; 或 s+=t; 4 printf("jiecheng=%f\n",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;i<m;i--) /**********FOUND**********/ y-=1/(i*i); /**********FOUND**********/ return m; } main() { int n=5; printf("\nthe result is %lf\n",fun(n)); } ------------------------------------- 『错误答案』: 1 for(i=2;i<=m;i++) 或 for(i=2;m>=i;i++) 或 for(i=2;i<m+1;i++) 或 for(i=2;i<1+m;i++) 或 for(i=2;m+1>i;i++) 或 for(i=2;1+m>i;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=%d\n",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)||(mc<10)) { /**********FOUND**********/ if((k%13=0)||(k%17=0)) {m=m+k; mc++;} /**********FOUND**********/ k++; } /**********FOUND**********/ return ; } main() { printf("%d\n",fun(500)); } ------------------------------------- 『错误答案』: 1 while ((2<=k)&&(mc<10)) 或 while ((k>=2)&&(10<mc)) 或 while ((2<=k)&&(10<mc)) 或 while ((k>=2)&&(mc<10)) 或 while ((2<=k)&&(mc<=9)) 或 while ((k>=2)&&(9<=mc)) 或 while ((2<=k)&&(9<=mc)) 或 while ((k>=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%ld\n",fun(long n)); } ------------------------------------- 『错误答案』: 1 long k=1; 2 num/=10; 或 num=num/10; 3 scanf("%ld",&n); 4 printf("\n%ld\n",fun(n)); ------------------------------------- 15题目:函数fun的功能是:求出两个非零正整数的最大公约数, 并作为函数值返回。例如,若给num1和num2分别输入49 和21,则输出的最大公约数为7。 请改正程序中的错误,使它能得出正确的结果。 ------------------------------------- int fun(int a,int b) { int r,t; if(a<b) { t=a; /**********FOUND**********/ b=a; /**********FOUND**********/ a=t; } r=a%b; while(r!=0) { a=b; b=r; /**********FOUND**********/ r=a/b;} /**********FOUND**********/ return a; } main() { int num1,num2,a; scanf("%d%d",&num1,&num2); a=fun(num1,num2); printf("the maximum common divisor is %d\n\n",a); } -------------------------------------『错误答案』: 1 a=b; 2 b=t; 3 r=a%b;} 4 return b; 或 return (b); 或 return(b); ------------------------------------- 16题目:在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun的 功能是:计算数组元素中值为正数的平均值(不包括0)。 例如,数组中元素的值依次为39,-47,21,2,-8,15, 0,则程序的运行结果为19.250000。 请改正程序中的错误,使它能得出正确的结果。 double fun(int s[]) { /**********FOUND**********/ int sum=0.0; int c=0,i=0; /**********FOUND**********/ while(s[i] =0) { if (s[i]>0) {sum+=s[i];c++;} i++; } /**********FOUND**********/ sum\=c; /**********FOUND**********/ return c; } main() { int x[1000];int i=0; do {scanf("%d",&x[i]);} while(x[i++]!=0); printf("%f\n",fun(x)); } 『错误答案』: 1 double sum=0.0; 2 while(s[i]!=0) 或 while!(s[i]==0) 或 while!(0==s[i]) 3 sum/=c; 或 sum=sum/c; 4 return sum; 或 return (sum); ------------------------------------- 17【程序改错】 ------------------------------------- 题目:fun函数的功能是:先从键盘上输入一个3行3列矩阵的各 个元素的值,然后输出主对角线上的元素之和sum。请改正程序中的错误,使它能得出正确的结果。 ------------------------------------- #include "stdio.h" int fun() { int a[3][3],sum; int i,j; /**********FOUND**********/ a=0; for(i=0;i<3;i++) for(j=0;j<3;j++) /**********FOUND**********/ scanf("%d",a[i][j]); for(i=0;i<3;i++) /**********FOUND**********/ sum=sum+a[i][j]; /**********FOUND**********/ printf("sum=%f\n",sum); } main() { fun(); } ------------------------------------- 『错误答案』: 1 sum=0; 2 scanf("%d",&a[i][j]); 3 sum=sum+a[i][i]; 或 sum+=a[i][i]; 4 printf("sum=%d\n",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+=x[j]; xa=xa/n; printf("ave=%f\n",xa); /**********FOUND**********/ for(j=0;j<=n;j++) if(x[j]<=xa) c++; /**********FOUND**********/ return xa; } main() { float x[]={23.5,45.67,12.1,6.4,58.9,98.4}; printf("%d\n",fun(x,6)); } 『错误答案』: 1 float xa=0; 或 float xa=0.0; 2 for(j=0;j<n;j++) 或 for(j=0;n>j;j++) 或 for(j=0;n-1>=j;j++) 或 for(j=0;j<=n-1;j++) 3 for(j=0;j<n;j++) 或 for(j=0;n>j;j++) 或 for(j=0;j<=n-1;j++) 或 for(j=0;n-1>=j;j++) 4 return c; 或 return (c); -------------------------------------
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服