C语言程序改错题.doc
- 文档编号:230218
- 上传时间:2022-10-07
- 格式:DOC
- 页数:16
- 大小:49KB
C语言程序改错题.doc
《C语言程序改错题.doc》由会员分享,可在线阅读,更多相关《C语言程序改错题.doc(16页珍藏版)》请在冰豆网上搜索。
第1题【程序改错】
功能:
先将在字符串s中的字符按逆序存放到t串中,然后把s中的
字符按正序连接到t串的后面。
例如:
当s中的字符串为:
“ABCDE”时,则t中的字符串应为:
“EDCBAABCDE”。
------------------------------------------------------*/
#include
#include
#include
voidfun(char*s,char*t)
{
/**********FOUND**********/
inti;
sl=strlen(s);
for(i=0;i /**********FOUND**********/ t[i]=s[sl-i]; for(i=0;i t[sl+i]=s[i]; /**********FOUND**********/ t[2*sl]="0"; } main() { chars[100],t[100]; printf("\nPleaseenterstrings: ");scanf("%s",s); fun(s,t); printf("Theresultis: %s\n",t); } 答案: 1).inti,sl; 2).t[i]=s[sl-i-1]; 3).t[2*sl]='\0';或t[2*sl]=0; 第2题【程序改错】 功能: 求出以下分数序列的前n项之和。 和值通过函数值返回main 函数。 2/1+3/2+5/3+8/5+13/8+21/13…… 例如: 若n=5,则应输出: 8.391667。 ------------------------------------------------------*/ #include #include /**********FOUND**********/ fun(intn) { inta,b,c,k;doubles; s=0.0;a=2;b=1; for(k=1;k<=n;k++) { /**********FOUND**********/ s=(double)a/b; c=a; a=a+b; b=c; } /**********FOUND**********/ returnc; } main() { intn=5; printf("\nThevalueoffunctionis: %lf\n",fun(n)); } 答案: 1).doublefun(intn) 2).s=s+(double)a/b;或s+=(double)a/b;或s+=a/(double)b;或s=s+a/(double)b; 3).returns; 第3题【程序改错】 功能: 读入一个整数m(5≤m≤20),函数getarr调用函数rnd获 得m个随机整数,函数sortpb将这m个随机整数从小到大排序。 例如: 若输入整数7,则应输出: 3101728323647。 ------------------------------------------------------*/ #include"conio.h" #include sortpb(intn,int*a) { /**********FOUND**********/ inti,j,p,t for(j=0;j { p=j; for(i=j+1;i /**********FOUND**********/ if(a[p]>a[j])p=i; /**********FOUND**********/ if(p==j) { t=a[j]; a[j]=a[p]; a[p]=t; } } } doublernd() { statict=29,c=217,m=1024,r=0; r=(r*t+c)%m;return((double)r/m); } getarr(intn,int*x) { inti; for(i=1;i<=n;i++,x++)*x=(int)(50*rnd()); } putarr(intn,int*z) { inti; for(i=1;i<=n;i++,z++) { printf("%4d",*z); if(! (i%10))printf("\n"); } printf("\n"); } main() { intaa[20],n; printf("\nPleaseenteranintegernumberbetween5and20: "); scanf("%d",&n); getarr(n,aa); printf("\n\nBeforesorting%dnumbers: \n",n);putarr(n,aa); sortpb(n,aa); printf("\nAftersorting%dnumbers: \n",n);putarr(n,aa); } 答案: 1).inti,j,p,t; 2).if(a[p]>a[i])p=i; 3).if(p! =j) 第4题【程序改错】 -------------------------------------------------------- 功能: 以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的 最大的n。 ------------------------------------------------------*/ #include #include"string.h" main() { intn,s; /**********FOUND**********/ s==n=0; /**********FOUND**********/ while(s>1000) { ++n; s+=n*n; } /**********FOUND**********/ printf("n=%d\n",&n-1); } 答案: 1).s=n=0; 2).while(s<=1000) 3).printf("n=%d\n",n-1); 第5题【程序改错】 -------------------------------------------------------- 功能: 求出a所指数组中最大数和次最大数(规定最大数和次最大 数不在a[0]和a[1]中),依次和a[0]、a[1]中的数对调。 例如: 数组中原有的数: 7、10、12、0、3、6、9、11、5、8, 输出的结果为: 12、11、7、0、3、6、9、10、5、8。 ------------------------------------------------------*/ #include #include #defineN20 voidfun(int*a,intn) { intk,m1,m2,max1,max2,t; max1=max2=-32768;m1=m2=0; for(k=0;k if(a[k]>max1) { max2=max1;m2=m1; max1=a[k];m1=k; } /**********FOUND**********/ elseif(a[k]>max1) { max2=a[k];m2=k;} /**********FOUND**********/ t=a[0]; a[m1]=a[0]; a[m1]=t; /**********FOUND**********/ t=a[1]; a[m2]=a[1]; a[m2]=t; } main() { intb[N]={7,10,12,0,3,6,9,11,5,8},n=10,i; for(i=0;i printf("%d",b[i]); printf("\n"); fun(b,n); for(i=0;i printf("%d",b[i]); printf("\n"); } 答案: 1).elseif(a[k]>max2) 2).t=a[0];a[0]=a[m1];a[m1]=t; 3).t=a[1];a[1]=a[m2];a[m2]=t; 第6题【程序改错】 -------------------------------------------------------- 功能: 读入一个整数k(2≤k≤10000),打印它的所有质因子(即 所有为素数的因子)。 例如: 若输入整数: 2310,则应输出: 2、3、5、7、11。 请改正程序中的语法错误,使程序能得出正确的结果。 ------------------------------------------------------*/ #include"conio.h" #include /**********FOUND**********/ isPrime(integern) { inti,m; m=1; for(i=2;i /**********FOUND**********/ if(n%i)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 改错