c语言改错题.docx
- 文档编号:10614357
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:105
- 大小:35.94KB
c语言改错题.docx
《c语言改错题.docx》由会员分享,可在线阅读,更多相关《c语言改错题.docx(105页珍藏版)》请在冰豆网上搜索。
c语言改错题
显示序号:
1
题号:
14
科目:
TurboC
题型:
程序改错
题干:
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
求1到20的阶乘的和。
------------------------------------------------------*/
fun()
{
intn,j;
floats=0.0,t=1.0;
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;或t=j*t;
3).s=★s★+★t★;或s+=t;或s=t+s;
4).printf("jiecheng=%f\n",s);
显示序号:
2
题号:
19
科目:
TurboC
题型:
程序改错
题干:
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
计算正整数num的各位上的数字之积。
例如:
输入252,则输出应该是20。
------------------------------------------------------*/
longfun(longnum)
{
/**********FOUND**********/
longk;
do
{
k*=num%10;
/**********FOUND**********/
num\=10;
}while(num);
returnk;
}
main()
{
longn;
printf("\nPleaseenteranumber:
");
/**********FOUND**********/
scanf("%ld",n);
/**********FOUND**********/
printf("\n%ld\n",fun(longn));
}
答案:
1).longk=1;
2).num/=10;或num=num/10;
3).scanf("%ld",&n);
4).printf("\n%ld\n",fun(n));
显示序号:
3
题号:
22
科目:
TurboC
题型:
程序改错
题干:
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
求出两个非零正整数的最大公约数,并作为函数值返回。
例如:
若给num1和num2分别输入49和21,则输出的最大公约数为7。
------------------------------------------------------*/
intfun(inta,intb)
{
intr,t;
if(a
{
t=a;
/**********FOUND**********/
b=a;
/**********FOUND**********/
a=t;
}
r=a%b;
while(r!
=0)
{
a=b;
b=r;
/**********FOUND**********/
r=a/b;
}
/**********FOUND**********/
returna;
}
main()
{
intnum1,num2,a;
scanf("%d%d",&num1,&num2);
a=fun(num1,num2);
printf("themaximumcommondivisoris%d\n\n",a);
}
答案:
1).a=b;
2).b=t;
3).r=a%b;
4).returnb;或return(b);或return(b);
显示序号:
4
题号:
249
科目:
TurboC
题型:
程序改错
题干:
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
从键盘输入十个学生的成绩,统计最高分,最低分和平均分。
max代表最高分,min代表最低分,avg代表平均分。
------------------------------------------------------*/
main()
{
inti;
/***********FOUND***********/
floata[8],min,max,avg;
printf("input10score:
");
for(i=0;i<=9;i++)
{
printf("inputascoreofstudent:
");
/***********FOUND***********/
scanf("%f",a);
}
/***********FOUND***********/
max=min=avg=a[1];
for(i=1;i<=9;i++)
{
/***********FOUND***********/
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); } 答案: 1).floata[10],min,max,avg; 2).scanf("%f",&a[i]);或scanf("%f",a+i); 3).max=min=avg=a[0]; 4).if(min>a[i])或if(a[i] 显示序号: 5 题号: 253 科目: TurboC 题型: 程序改错 题干: /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 输入10个数,要求输出这10个数的平均值 ------------------------------------------------------*/ floataverage(floatarray[10]) { inti; floataver,sum=array[0]; /***********FOUND***********/ for(i=0;i<10;i++) sum=sum+array[i]; aver=sum/10.0; return(aver); } main() { /***********FOUND***********/ intscore[10],aver; inti; printf("input10scores: \n"); for(i=0;i<10;i++) /***********FOUND***********/ scanf("%f",score); printf("\n"); /***********FOUND***********/ aver=average(score[10]); printf("averagescoreis%5.2f",aver); } 答案: 1).for(i=1;i<10;i++)或for(i=1;i<=9;i++) 2).floatscore[10],aver;或floataver,score[10]; 3).scanf("%f",&score[i]);或scanf("%f",score+i); 4).aver=average(score); 显示序号: 6 题号: 258 科目: TurboC 题型: 程序改错 题干: /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 判断整数x是否是同构数。 若是同购数,函数返回1;否则返回0。 说明: 所谓“同构数”是指这个数出现在它的平方数的右边。 例如: 输入整数25,25的平方数是625,25是625中右侧的数, 所以25是同构数。 注意: x的值由主函数从键盘读入,要求不大于1000。 ------------------------------------------------------*/ #include"stdio.h" intfun(intx) { /**********FOUND**********/ intk /**********FOUND**********/ k=x; /**********FOUND**********/ if((k%10==x)&&(k%100==x)&&(k%1000==x)) return1; else return0; } main() { intx,y; clrscr(); printf("\nPleaseenteraintegernumbers: "); scanf("%d",&x); if(x>100){printf("dataerror! \n");exit(0);} y=fun(x); if(y) printf("%dYES\n",x); else printf("%dNO\n",x); getch(); } 答案: 1).intk; 2).k=x*x; 3).if((k%10==x)||(k%100==x)||(k%1000==x)) 显示序号: 7 题号: 352 科目: TurboC 题型: 程序改错 题干: /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 根据整型形参m,计算如下公式的值: y=1+1/3+1/5+1/7+...+1/(2m-1) ------------------------------------------------------*/ #include"stdio.h" doublefun(intm) { /**********FOUND**********/ doubley=1 inti; /**********FOUND**********/ for(i=2;i /**********FOUND**********/ y+=1.0/(2i-1); return(y); } main() { intn; clrscr(); printf("Entern: "); scanf("%d",&n); printf("\nTheresultis%1f\n",fun(n)); getch(); } 答案: 1).doubley=1; 2).for(i=1;i<=m;i++) 3).y+=1.0/(2*i-3); 显示序号: 8 题号: 355 科目: TurboC 题型: 程序改错 题干: /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 找出一个大于给定整数m且紧随m的素数,并作为函数值返回。 ------------------------------------------------------*/ #include #include intfun(intm) { /**********FOUND**********/ inti;k; for(i=m+1;;i++) { for(k=2;k /**********FOUND**********/ if(i%k! =0) break; /**********FOUND**********/ if(k=i) return(i); } } main() { intn; clrscr(); printf("\nPleaseentern: "); scanf("%d",&n); printf("%d\n",fun(n)); getch(); } 答案: 1).inti,k;或inti;intk;或intk,i;或intk;inti; 2).if(i%k==0)或if(! (i%k)) 3).if(k==i)或if(i==k) 显示序号: 9 题号: 364 科目: TurboC 题型: 程序改错 题干: /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 用选择法对数组中的n个元素按从小到大的顺序进行排序。 ------------------------------------------------------*/ #include #defineN20 voidfun(inta[],intn) { inti,j,t,p; for(j=0;j { /**********FOUND**********/ p=j for(i=j;i /**********FOUND**********/ if(a[i]>a[p]) /**********FOUND**********/ p=j; t=a[p]; a[p]=a[j]; a[j]=t; } } main() { inta[N]={9,6,8,3,-1},i,m=5; printf("排序前的数据: "); for(i=0;i printf("%d",a[i]); printf("\n"); fun(a,m); printf("排序后的数据: "); for(i=0;i printf("%d",a[i]); printf("\n"); getch(); } 答案: 1).p=j; 2).if(a[i]a[i]) 3).p=i; 显示序号: 10 题号: 367 科目: TurboC 题型: 程序改错 题干: /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 用插入排序法将n个字符进行排序(降序)。 提示: 插入法排序的思路是: 先对数组的头两个元素进行排序, 然后根据前两个元素的情况插入第三个元素,再插入第 四个元素…)。 ------------------------------------------------------*/ #defineN81 #include #include voidfun(char*aa,intn) { /**********FOUND**********/ inta,b;t; for(a=1;a { t=aa[a];b=a-1; /**********FOUND**********/ while((b>=0)and(t>aa[b])) { aa[b+1]=aa[b];b--;} /**********FOUND**********/ aa[b+1]=t } } main() {chara[N]; inti; printf("\nEnterastring: ");gets(a); fun(a,strlen(a)); printf("\nThestring: ");puts(a); getch(); } 答案: 1).inta,b,t; 2).while((b>=0)&&(t>aa[b])) 3).aa[b+1]=t; 显示序号: 11 题号: 374 科目: TurboC 题型: 程序改错 题干: /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 读入一个整数k(2≤k≤10000),打印它的所有质因子(即 所有为素数的因子)。 例如: 若输入整数: 2310,则应输出: 2、3、5、7、11。 请改正程序中的语法错误,使程序能得出正确的结果。 ------------------------------------------------------*/ #include"conio.h" #include"stdio.h" /**********FOUND**********/ IsPrime(integern) { inti,m; m=1; for(i=2;i /**********FOUND**********/ if(n%i) { m=0; break; } /**********FOUND**********/ return(n); } main() { intj,k; clrscr(); printf("\nPleaseenteranintegernumberbetween2and10000: "); scanf("%d",&k); printf("\n\nTheprimefactor(s)of%dis(are): ",k); for(j=2;j<=k;j++) if((! (k%j))&&(IsPrime(j)))printf("\n%4d",j); printf("\n"); } 答案: 1).IsPrime(intn) 2).if(! (n%i)) 3).return(m); 显示序号: 12 题号: 375 科目: TurboC 题型: 程序改错 题干: /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 根据整型形参m,计算某一数据项的值。 y=1/(100*100)+1/(200*200)+1/(300*300)+……+1/(m*m) 例如: 若m=2000,则应输出: 0.000160。 ------------------------------------------------------*/ #include #include /**********FOUND**********/ fun(intm) { doubley=0,d; inti; /**********FOUND**********/ for(i=100,i<=m,i+=100) { d=(double)i*(double)i; /**********FOUND**********/ y+=1.0\d; } return(y); } main() { intn=2000; clrscr(); printf("\nTheresultis%lf\n",fun(n)); } 答案: 1).doublefun(intm) 2).for(i=100;i<=m;i+=100) 3).y+=1.0/d; 显示序号: 13 题号: 376 科目: TurboC 题型: 程序改错 题干: /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 根据整型形参n,计算某一数据项的值。 A[1]=1,A[2]=1/(1+A[1]),
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 改错