程序改错C教材_第1页
程序改错C教材_第2页
程序改错C教材_第3页
程序改错C教材_第4页
程序改错C教材_第5页
已阅读5页,还剩208页未读 继续免费阅读

下载本文档

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

文档简介

程序改错==================================================题号:7471/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:计算正整数num的各位上的数字之积。例如:若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。------------------------------------------------------*/#include<stdio.h>#include<conio.h>longfun(longnum){/**********ERROR**********/longk=1do{k*=num%10;/**********ERROR**********/num\=10;/**********ERROR**********/}while(!num);return(k);}voidmain(){longn;printf("\Pleaseenteranumber:");scanf("%ld",&n);printf("\n%ld\n",fun(n));}答案:位置1:longk=1;位置2:num/=10;【或】num=num/10;位置3:}while(num);【或】while(num!=0)题号:7383/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:统计出若干个学生的平均成绩,最低分以及得最低分的人数。例如:输入10名学生的成绩分别为92,87,68,56,92,84,67,75,92,66,则输出平均成绩为77.9,最低高分为56,得最低分的人数为1人。------------------------------------------------------*/#include"stdio.h"floatMin=0;intJ=0;floatfun(floatarray[],intn){inti;floatsum=0,ave;Min=array[0];for(i=0;i<n;i++){if(Min>array[i])Min=array[i];/**********ERROR**********/sum=+array[i];}/**********ERROR**********/ave=sum\n;for(i=0;i<n;i++)/**********ERROR**********/if(array[i]=Min)J++;return(ave);}voidmain(){floata[10],ave;inti=0;for(i=0;i<10;i++)scanf("%f",&a[i]);ave=fun(a,10);printf("ave=%f\n",ave);printf("min=%f\n",Min);printf("Total:%d\n",J);}答案:位置1:sum+=array[i];【或】sum=sum+array[i];位置2:ave=sum/n;位置3:if(array[i]==Min)J++;题号:1698/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:用下面的和式求圆周率的近似值。直到最后一项的绝对值小于等于0.0001。π111-=1--+---+...4357------------------------------------------------------*/#include"stdio.h"/**********ERROR**********/#include"math"voidfun(){inti=1;/**********ERROR**********/ints=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();}答案:位置1:#include"math.h"【或】#include<math.h>位置2:floats=0,t=1,p=1;【或】floats=0,p=1,t=1;【或】floatp=1,s=0,t=1;【或】floatp=1,t=1,s=0;【或】floatt=1,p=1,s=0;【或】floatt=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);题号:7244/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?------------------------------------------------------*/#include"stdio.h"intage(intn){intc;/**********ERROR**********/if(n=1)c=10;else/***********FOUND***********/c=age(n)+2;return(c);}voidmain(){/**********ERROR**********/printf("%d",age5);}答案:位置1:if(n==1)位置2:c=age(n-1)+2;位置3:printf("%d",age(5));题号:3230/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:从键盘输入的整数中找出最小值,输入负数时结束。--------------------------------------------------------注意:不可以增加或删除程序行,也不可以更改程序的结构。------------------------------------------------------*/#include"stdio.h"main(){intmin,a;scanf("%d",&a);min=a;/**********ERROR**********/while(a<0){/**********ERROR**********/if(a>min)min=a;scanf("%d",&a);}}答案:位置1:while(a>=0)位置2:if(a<min)min=a;【或】if(a<=min)min=a;题号:1900/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:从键盘输入的正整数中找出最大值,输入0时结束。--------------------------------------------------------注意:不可以增加或删除程序行,也不可以更改程序的结构。------------------------------------------------------*/#include"stdio.h"main(){intmax=0,a;do{scanf("%d",&a);/**********ERROR**********/if(a>max)a=max;}/**********ERROR**********/while(a==0);printf("%d",max);}答案:位置1:if(a>max)max=a;位置2:while(a!=0);题号:5672/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:输入两个正整数,并由小到大排列。输入负数或0则重新输入。--------------------------------------------------------注意:不可以增加或删除程序行,也不可以更改程序的结构。------------------------------------------------------*/#include"stdio.h"main(){inta,b,t;do{scanf("%d,%d",&a,&b);}/**********ERROR**********/while(a>=0&&b>=0);if(a>=b)/**********ERROR**********/t=a;a=b;b=t;printf("a=%d,b=%d",a,b);}答案:位置1:while(a<=0||b<=0);位置2:{t=a;a=b;b=t;}题号:7282/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:从m个学生的成绩中统计出高于和等于平均分的学生人数,此人数由函数值返回。平均分通过形参传回,输入学生成绩时,用-1结束输入,由程序自动统计学生人数。例如:若输入8名学生的成绩,输入形式如下:80.5607290.59851.58864-1结果为:Thenumberofstudents:4Ave=75.56。------------------------------------------------------*/#include<conio.h>#include<stdio.h>#defineN20intfun(float*s,intn,float*aver){floatav,t;intcount,i;count=0;t=0.0;for(i=0;i<n;i++)t+=s[i];av=t/n;printf("ave=%f\n",av);for(i=0;i<n;i++)/**********ERROR**********/if(s[i]<av)count++;/**********ERROR**********/aver=av;/**********ERROR**********/returncount}voidmain(){floata,s[30],aver;intm=0,i;printf("\nPleaseentermarks(-1toend):\n");scanf("%f",&a);while(a>0){s[m]=a;m++;scanf("%f",&a);}printf("\nThenumberofstudents:%d\n",fun(s,m,&aver));printf("Ave=%6.2f\n",aver);}答案:位置1:if(s[i]>=av)count++;位置2:*aver=av;位置3:returncount;题号:2489/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求100以内(包括100)的偶数之和.------------------------------------------------------*/#include"stdio.h"main(){/**********ERROR**********/inti,sum=1;/**********ERROR**********/for(i=2;i<=100;i+=1)sum+=i;/**********ERROR**********/printf("Sum=%d\n";sum);}答案:位置1:inti,sum=0;位置2:for(i=2;i<=100;i+=2)【或】for(i=2;i<=100;i=i+2)位置3:printf("Sum=%d\n",sum);题号:7459/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:编写函数求2!+4!+6!+8!+10+12!+14!。------------------------------------------------------*/#include"stdio.h"longsum(intn){/**********ERROR**********/inti,jlongt,s=0;/**********ERROR**********/for(i=2;i<=n;i++){t=1;for(j=1;j<=i;j++)t=t*j;s=s+t;}/**********ERROR**********/return(t);}voidmain(){printf("thissum=%ld\n",sum(14));}答案:位置1:inti,j;位置2:for(i=2;i<=n;i=i+2)【或】for(i=2;i<=n;i+=2)【或】for(i=2;i<=n;i++,i++)【或】for(i=2;i<=n;++i,++i)位置3:return(s);题号:7386/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:求一个3行4列矩阵的外框的元素值之和。注意:矩阵四个角上的元素不能重复加。例如:矩阵元素为1,2,3,4,5,6,7,8,9,10,11,12时,四框元素值之和应为65。------------------------------------------------------*/#include"stdio.h"intfun(inta[3][4],intm,intn){/**********ERROR**********/inti,j,s,s1=s2=s3=s4=0;for(j=0;j<n;j++){s1=s1+a[0][j];/**********ERROR**********/s2=s2+a[m][j];}/**********ERROR**********/for(i=0;i<m;i++){s3=s3+a[i][0];s4=s4+a[i][n-1];}/**********ERROR**********/s=s1-s2-s3-s4;returns;}voidmain(){inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};printf("total=%d\n",fun(a,3,4));}答案:位置1:inti,j,s,s1=0,s2=0,s3=0,s4=0;位置2:s2=s2+a[m-1][j];【或】s2+=a[m-1][j];【或】s2=a[m-1][j]+s2;位置3:for(i=1;i<m-1;i++)【或】for(i=1;i<-1+m;i++)【或】for(i=1;m-1>i;i++)【或】for(i=1;-1+m>i;i++)【或】for(i=1;i<=m-2;i++)【或】for(i=1;m-2>=i;i++)位置4:s=s1+s2+s3+s4;题号:7446/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:809*??=800*??+9*??+1其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。------------------------------------------------------*/#include"stdio.h"voidoutput(longb,longi){printf("\n%ld=800*%ld+9*%ld+1\n",b,i,i);printf("??代表的两位数:%d",i);printf("\n809*??后的结果:%d",b);}voidmain(){/**********ERROR**********/longinta;b;i;a=809;/**********ERROR**********/for(i=10;i<100,i++){/**********ERROR**********/b=i/a+1;if(b>=1000&&b<=10000&&8*i<100&&9*i>=100)output(b,i);}}答案:位置1:longinta,b,i;位置2:for(i=10;i<100;i++)【或】for(i=10;i<=99;i++)位置3:b=i*a+1;【或】b=a*i+1;题号:3315/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。------------------------------------------------------*/#include"stdio.h"main(){/**********ERROR**********/longa,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("thereare5,%ld%ld%ld%ld%ld\n",e,d,c,b,a);elseif(b!=0)printf("thereare4,%ld%ld%ld%ld\n",e,d,c,b);elseif(c!=0)printf("thereare3,%ld%ld%ld\n",e,d,c);elseif(d!=0)printf("thereare2,%ld%ld\n",e,d);elseif(e!=0)printf("thereare1,%ld\n",e);}答案:位置1:longa,b,c,d,e,x;位置2:b=x%10000/1000;位置3:if(a!=0)【或】if(!a)题号:7267/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。------------------------------------------------------*/#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,char*t){/**********ERROR**********/inti;sl=strlen(s);for(i=0;i<sl;i++)/**********ERROR**********/t[i]=s[sl-i];for(i=0;i<sl;i++)t[sl+i]=s[i];/**********ERROR**********/t[2*sl]="0";}voidmain(){chars[100],t[100];printf("\nPleaseenterstrings:");scanf("%s",s);fun(s,t);printf("Theresultis:%s\n",t);}答案:位置1:inti,sl;【或】inti;intsl;【或】intsl;inti;【或】intsl,i;位置2:t[i]=s[sl-i-1];【或】t[i]=s[sl-1-i];位置3:t[2*sl]='\0';【或】t[2*sl]=0;题号:4271/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。下列给定程序中,函数fun的功能是:计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。例如:当n=10时,程序的输出结果应为23.197745。------------------------------------------------------*/#include<stdio.h>#include<math.h>/**********ERROR**********/fun(intn){doublesum,s0,s1,s2,s;intk;/**********ERROR**********/sum=0.0;if(n<=2)sum=0.0;s0=0.0;s1=0.0;/**********ERROR**********/s2=0.0;/**********ERROR**********/for(k=4;k>n;k++){s=s0+s1+s2;sum+=sqrt(s);s0=s1;s1=s2;s2=s;}returnsum;}main(){intn;scanf("%d",&n);printf("%lf\n",fun(n));}答案:位置1:doublefun(intn)位置2:sum=1.0;【或】sum=1;位置3:s2=1.0;【或】s2=1;位置4:for(k=4;k<=n;k++)【或】for(k=4;n>=k;k++)【或】for(k=4;k<n+1;k++)【或】for(k=4;k<1+n;k++)【或】for(k=4;n+1>k;k++)【或】for(k=4;1+n>k;k++)题号:7353/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:求1到20的阶乘的和。------------------------------------------------------*/#include"stdio.h"voidfun(){intn,j;floats=0.0,t=1.0;for(n=1;n<=20;n++){/**********ERROR**********/s=1;for(j=1;j<=n;j++)/**********ERROR**********/t=t*n;/**********ERROR**********/s+t=s;}printf("jiecheng=");/**********ERROR**********/printf("%d\n",s);}voidmain(){fun();}答案:位置1:t=1;【或】t=1.0;位置2:t=t*j;【或】t*=j;【或】t=j*t;位置3:s=s+t;【或】s+=t;【或】s=t+s;位置4:printf("%f\n",s);【或】printf("%f",s);题号:2840/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:生成一个周边元素为5,其它元素为1的3*3的二维数组。------------------------------------------------------*/#include"stdio.h"voidfun(intarr[][3]){/**********ERROR**********/inti,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;elsearr[i][j]=1;}main(){inta[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");}}答案:位置1:inti,j;位置2:for(i=0;i<3;i++)位置3:if(i==0||j==0||i==2||j==2)题号:3194/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:求两个整数的最小公倍数。--------------------------------------------------------注意:不可以增加或删除程序行,也不可以更改程序的结构。------------------------------------------------------*/#include"stdio.h"main(){inta,b,i,j,t;scanf("%d,%d",&a,&b);if(a>b)t=a;elset=b;/**********ERROR**********/for(i=t;i<=a;i++){if(i%a==0&&i%b==0)/**********ERROR**********/j=i;break;}}答案:位置1:for(i=t;;i++)【或】for(i=t;i<=a*b;i++)位置2:{j=i;break;}题号:7387/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n------------------------------------------------------*/#include<stdio.h>voidmain(){/**********ERROR**********/inti,s;p,n;printf("Entern:\n");/**********ERROR**********/scanf("%d",n);/**********ERROR**********/for(s=p=0,i=1;i<n;i++)s+=p+=i;printf("S=%d\n",s);}答案:位置1:inti,s,p,n;位置2:scanf("%d",&n);位置3:for(s=p=0,i=1;i<=n;i++)【或】for(s=p=0,i=1;i<n+1;i++)题号:7453/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:根据整型形参m,计算如下公式的值:y=1+1/3+1/5+1/7+...+1/(2m-1)------------------------------------------------------*/#include"stdio.h"doublefun(intm){/**********ERROR**********/doubley=1inti=0;/**********ERROR**********/while(i<m){/**********ERROR**********/y+=1.0/(2i-1);i++;}return(y);}voidmain(){intn;printf("Entern:");scanf("%d",&n);printf("\nTheresultis%1f\n",fun(n));}答案:位置1:doubley=0;位置2:while(i<=m)【或】while(i<m+1)位置3:y+=1.0/(2*i-1);题号:7434/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:编写一个函数,该函数可以统计一个长度为3的字符串在另一个字符串中出现的次数。例如:假定输入的字符串为:asdasasdfgasdaszx67asdmklo,字符串为:asd,则应输出n=4。------------------------------------------------------*/#include<stdio.h>#include<string.h>#include<conio.h>intfun(char*str,char*substr){/**********ERROR**********/inti,n=0/**********ERROR**********/for(i=0;i<=strlen(str);i++)if((str[i]==substr[0])&&(str[i+1]==substr[1])&&(str[i+2]==substr[2]))/**********ERROR**********/++i;returnn;}voidmain(){charstr[81],substr[4];intn;printf("输入主字符串:");gets(str);printf("输入子字符串:");gets(substr);puts(str);puts(substr);n=fun(str,substr);printf("n=%d\n",n);}答案:位置1:inti,n=0;位置2:for(i=0;i<=strlen(str)-3;i++)【或】for(i=0;i<strlen(str)-2;i++)位置3:n++;【或】n+=1;【或】n=n+1;【或】++n;题号:7122/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的最大的n。------------------------------------------------------*/#include"stdio.h"#include"string.h"voidmain(){intn,s;/**********ERROR**********/s==n=0;/**********ERROR**********/while(s>1000){++n;s+=n*n;}/**********ERROR**********/printf("n=%d\n",&n-1);}答案:位置1:s=n=0;【或】s=0,n=0;【或】s=0;n=0;位置2:while(s<=1000)【或】while(s<1001)位置3:printf("n=%d\n",n-1);题号:7329/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:分别统计输入的字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。例如:若输入:THIsisaboot,则输出应该是:1、0、2、2、0。------------------------------------------------------*/#include<conio.h>#include<stdio.h>voidfun(char*s,intnum[5]){intk,i=5;for(k=0;k<i;k++)/**********ERROR**********/num[i]=0;for(;*s;s++){i=-1;/**********ERROR**********/switch(s){case'a':case'A':{i=0;break;}case'e':case'E':{i=1;break;}case'i':case'I':{i=2;break;}case'o':case'O':{i=3;break;}case'u':case'U':{i=4;break;}}/**********ERROR**********/if(i<0)num[i]++;}}voidmain(){chars1[81];intnum1[5],i;printf("\nPleaseenterastring:");gets(s1);fun(s1,num1);for(i=0;i<5;i++)printf("%d",num1[i]);printf("\n");}答案:位置1:num[k]=0;位置2:switch(*s)位置3:if(i>=0)题号:1116/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。例如:输入3+5=或5-2=或3*4=或4/2=,求表达式结果。------------------------------------------------------*/#include"stdio.h"main(){floatx,y;charoperate1;printf("Arithmeticexpression\n");/**********ERROR**********/scanf("%f",x);/**********ERROR**********/while((operate1==getchar())!='='){printf("result=");scanf("%f",&y);/**********ERROR**********/switch(y){case'+':x+=y;break;case'-':x-=y;break;case'*':x*=y;break;case'/':x/=y;break;}}printf("%f",x);return;}答案:位置1:scanf("%f",&x);位置2:while((operate1=getchar())!='=')位置3:switch(operate1)题号:7316/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。------------------------------------------------------*/#include<conio.h>#include<stdio.h>#include<string.h>/**********ERROR**********/voidfun(charstr,charch){while(*str&&*str!=ch)str++;/**********ERROR**********/if(*str==ch){str[0]=ch;/**********ERROR**********/str[1]='0';}}voidmain(){chars[81],c;printf("\nPleaseenterastring:\n");gets(s);printf("\nPleaseenterthecharactertosearch:");c=getchar();fun(s,c);printf("\nTheresultis%s\n",s);}答案:位置1:voidfun(char*str,charch)位置2:if(*str=='\0')位置3:str[1]='\0';题号:7165/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:一个已排好序的一维数组,输入一个数number,要求按原来排序的规律将它插入数组中.注:1.数组元素引用请使用下标法;2.修改的代码中不要含有空格。------------------------------------------------------*/#include"stdio.h"voidmain(){inta[11]={1,4,6,9,13,16,19,28,40,100};inttemp1,temp2,number,end,i,j;i=0;while(i<10)printf("%5d",a[i++]);printf("\n");scanf("%d",&number);/**********ERROR**********/end=a[10];if(number>end)/**********ERROR**********/a[11]=number;else{for(i=0;i<10;i++){/**********ERROR**********/if(a[i]<number){temp1=a[i];a[i]=number;for(j=i+1;j<11;j++){temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}for(i=0;i<11;i++)printf("%6d",a[i]);}答案:位置1:end=a[9];位置2:a[10]=number;位置3:if(a[i]>number)【或】if(number<a[i])题号:6618/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:编写函数fun求20以内所有5的倍数之积。------------------------------------------------------*/#defineN20#include"stdio.h"main(){intsum;sum=fun(5);printf("%d以内所有%d的倍数之积为:%d\n",N,5,sum);}intfun(intm){/**********ERROR**********/ints=0,i;for(i=1;i<N;i++)/**********ERROR**********/if(i%m=0)/**********ERROR**********/s=*i;returns;}答案:位置1:ints=1,i;位置2:if(i%m==0)位置3:s=s*i【或】s=i*s【或】s*=i题号:6866/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求如下表达式:111S=1+--+---+......+-------1+21+2+31+2+3+......+n------------------------------------------------------*/#include<stdio.h>main(){intn;doublefun();printf("Pleaseinputanumber:");/**********ERROR**********/print("%d",n);printf("%10.6f\n",fun(n));}/**********ERROR**********/fun(intn){inti,j,t;doubles;s=0;/**********ERROR**********/while(i=1;i<=n;i++);{t=0;for(j=1;j<=i;j++)t=t+j;/**********ERROR**********/=s+1/t;}returns;}答案:位置1:scanf("%d",&n);位置2:doublefun(intn)位置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=1.0/(float)t+s;【或】s=s+1.0/t;【或】s=1.0/t+s;【或】s+=1.0/(float)t;【或】s+=1.0/(double)t;【或】s=s+1.0/(double)t;【或】s=1.0/(double)t+s;题号:840/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求1到20的阶乘的和。------------------------------------------------------*/#include<stdio.h>fun(){intn,j;floats=0.0,t=1.0;for(n=1;n<=20;n++){/**********ERROR**********/s=1;for(j=1;j<=n;j++)/**********ERROR**********/t=t*n;/**********ERROR**********/s+t=s;}/**********ERROR**********/printf("jiecheng=%d\n",s);}main(){fun();}答案:位置1:t=1;【或】t=1.0;位置2:t=t*j;【或】t=j*t;【或】t*=j;位置3:s=s+t;【或】s=t+s;【或】s+=t;位置4:printf("jiecheng=%f\n",s);题号:7401/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n项为:1,1,1,3,5,9,17,31,……项值通过函数值返回main()函数。例如:若n=15,则应输出:Thevalueis:2209。------------------------------------------------------*/#include<conio.h>#include<stdio.h>longfun(intn){longa=1,b=1,c=1,d=1,k;/**********ERROR**********/for(k=4;k<n;k++){d=a+b+c;/**********ERROR**********/a=bb=c;c=d;}/**********ERROR**********/returnk;}voidmain(){intn=15;printf("Thevalueis:%ld\n",fun(n));}答案:位置1:for(k=4;k<=n;k++)【或】for(k=4;k<n+1;k++)位置2:a=b;位置3:returnd;【或】returnc;【或】return(c);【或】return(d);题号:1224/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。------------------------------------------------------*/#include"stdio.h"voidfun(){inti;floatf1=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();}答案:位置1:printf("%8.0f",f1);【或】printf("%f",f1);【或】printf("%8f",f1);位置2:for(i=1;i<20;i++)【或】for(i=1;20>i;i++)【或】for(i=2;i<=20;i++)【或】for(i=2;20>=i;i++)【或】for(i=1;i<=19;i++)【或】for(i=1;19>=i;i++)位置3:f1=f2;位置4:f2=f3;题号:7166/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?------------------------------------------------------*/#include"stdio.h"voidmain(){/**********ERROR**********/floatsn=100.0;hn=sn/2;intn;/**********ERROR**********/for(n=2;n<10;n++){sn=sn+2*hn;/**********ERROR**********/hn=hn%2;}printf("thetotalofroadis%f\n",sn);printf("thetenthis%fmeter\n",hn);}答案:位置1:floatsn=100.0,hn=sn/2;位置2:for(n=2;n<=10;n++)【或】for(n=2;n<11;n++)位置3:hn=hn/2;题号:7321/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:利用二维数组输出如图所示的图形。*******************************------------------------------------------------------*/#include"stdio.h"#include<conio.h>/**********ERROR**********/#defineN=7voidmain(){chara[N][N];inti,j,z;for(i=0;i<N;i++)for(j=0;j<N;j++)/**********ERROR**********/a[i][j]=;z=0;for(i=0;i<(N+1)/2;i++){for(j=z;j<N-z;j++)a[i][j]='*';z=z+1;}z=z-1;for(i=(N+1)/2;i<N;i++){z=z-1;for(j=z;j<N-z;j++)a[i][j]='*';}for(i=0;i<N;i++){for(j=0;j<N;j++)/**********ERROR**********/printf("%d",a[i][j]);printf("\n");}}答案:位置1:#defineN7位置2:a[i][j]='';位置3:printf("%c",a[i][j]);题号:7481/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如:当s中的数为:87654时,t中的数为:864。------------------------------------------------------*/#include<conio.h>#include<stdio.h>voidfun(longs,long*t){intd;longsl=1;*t=0;while(s>0){d=s%10;/**********ERROR**********/if(d%2=0){/**********ERROR**********/*t=d*sl+t;sl*=10;}/**********ERROR**********/s\=10;}}voidmain(){longs,t;printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}答案:位置1:if(d%2==0)【或】if(d%2!=1)位置2:*t=d*sl+*t;【或】*t+=d*sl;【或】*t+=sl*d;【或】*t=*t+d*sl;【或】*t=*t+sl*d;位置3:s/=10;【或】s=s/10;题号:6563/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求1到10的阶乘的和。------------------------------------------------------*/#include<stdio.h>main(){inti;floats=0;floatfac(intn);/**********ERROR**********/for(i=1;i<10;i++)/**********ERROR**********/s=fac(i);printf("%f\n",s

温馨提示

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

评论

0/150

提交评论