程序改错.docx
- 文档编号:9753180
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:122
- 大小:65.66KB
程序改错.docx
《程序改错.docx》由会员分享,可在线阅读,更多相关《程序改错.docx(122页珍藏版)》请在冰豆网上搜索。
程序改错
1.给定程序modi.c中函数fun的功能是:
将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其它字符不变。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
#include
#include
voidfun(char*s)
{
/**********found***********/
while(*s)
{if(*s>='A'&&*s<='Z'||*s>='a'&&*s<='z')
{if(*s=='Z')*s='A';
elseif(*s=='z')*s='a';
else*s+=1;
}
/**********found***********/
s++;
}
}
main()
{chars[80];
system("cls");
printf("\nEnterastringwithlength<80.:
\n\n");gets(s);
printf("\nThestring:
\n\n");puts(s);
fun(s);
printf("\n\nTheCords:
\n\n");puts(s);
}
2.给定程序modi.c中函数fun的功能是:
先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。
例如:
当s中的字符串为:
"ABCDE"时,
则t中的字符串应为:
"EDCBAABCDE"。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
#include
#include
voidfun(char*s,char*t)
{
/************found************/
inti,sl;
sl=strlen(s);
for(i=0;i /************found************/ t[i]=s[sl-i-1]; for(i=0;i t[sl+i]=s[i]; t[2*sl]='\0'; } main() {chars[100],t[100]; system("cls"); printf("\nPleaseenterstrings: ");scanf("%s",s); fun(s,t); printf("Theresultis: %s\n",t); } 3.给定程序modi.c中函数fun的功能是: 将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其它字符不变。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include #include #include voidfun(char*s) { /**********found***********/ while(*s) {if(*s>='A'&&*s<='Z'||*s>='a'&&*s<='z') {if(*s=='Z')*s='A'; elseif(*s=='z')*s='a'; else*s+=1; } /**********found***********/ s++; } } main() {chars[80]; system("cls"); printf("\nEnterastringwithlength<80.: \n\n");gets(s); printf("\nThestring: \n\n");puts(s); fun(s); printf("\n\nTheCords: \n\n");puts(s); } 4.给定程序modi.c中函数fun的功能是: 依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include #include voidfun(char*s) {inti,j; for(i=0,j=0;s[i]! ='\0';i++) if(s[i]>='0'&&s[i]<='9') /**********found**********/ s[j++]=s[i]; /**********found**********/ s[j]='\0'; } main() {charitem[80]; system("cls"); printf("\nEnterastring: ");gets(item); printf("\n\nThestringis: \"%s\"\n",item); fun(item); printf("\n\nThestringofchangingis: \"%s\"\n",item); } 5.给定程序modi.c中函数fun的功能是: 对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include #include #include #defineN10 typedefstructss {charnum[10]; ints; }STU; STU*fun(STUa[],intm) {STUb[N],*t; inti,j,k; /**********found**********/ *t=(STU*)calloc(sizeof(STU),m); for(i=0;i for(k=0;k {for(i=j=0;i if(b[i].s>b[j].s)j=i; /**********found**********/ t[k]=b[j]; t[k].s=b[j].s; b[j].s=0; } returnt; } outresult(STUa[],FILE*pf) {inti; for(i=0;i fprintf(pf,"No=%sMark=%d\n",a[i].num,a[i].s); fprintf(pf,"\n\n"); } main() {STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77}, {"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}}; STU*pOrder; inti,m; system("cls"); printf("*****TheOriginaldata*****\n"); outresult(a,stdout); printf("\nGivethenumberofthestudentswhohavebetterscore: "); scanf("%d",&m); while(m>10) {printf("\nGivethenumberofthestudentswhohavebetterscore: "); scanf("%d",&m); } pOrder=fun(a,m); printf("*****THERESULT*****\n"); printf("Thetop: \n"); for(i=0;i printf("%s%d\n",pOrder[i].num,pOrder[i].s); free(pOrder); } 6.给定程序MODI1.C中,函数fun的功能是: 在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。 处理后原数列中首尾2个数不变。 处理后数列在主函数中输出。 例如,有10个正整数如下: 请改正程序中指定部位的错误,使它能得出正确结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #defineN10 intfindmid(inta,intb,intc) {intt; t=(a>b)? (b>c? b: (a>c? c: a)): ((a>c)? a: ((b>c)? c: b)); /**********found**********/ returnt; } voidfun(intx[]) {inti,a,b,c,t[N]; /**********found**********/ for(i=0;i for(i=0;i {a=t[i];b=t[i+1];c=t[i+2]; /**********found**********/ x[i+1]=findmid(a,b,c); } } main() {inti,x[N]={6,5,7,23,18,5,8,21,45,38}; for(i=0;i printf("\n"); fun(x); for(i=0;i printf("\n"); } 7.给定程序modi.c中函数fun的功能是: 将字符串s中位于奇数位置的字符或ASCII码为偶数的字符放入字符串t中(规定第一个字符放在第0位中)。 例如,字符串中的数据为: AABBCCDDEEFF, 则输出应当是: ABBCDDEFF。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include #include #include #defineN80 voidfun(char*s,chart[]) {inti,j=0; for(i=0;i<(int)strlen(s);i++) /***********found**********/ if(i%2||s[i]%2==0) t[j++]=s[i]; /***********found**********/ t[j]='\0'; } main() {chars[N],t[N]; system("cls"); printf("\nPleaseenterstrings: ");gets(s); fun(s,t); printf("\nTheresultis: %s\n",t); } 8.在主函数中从键盘输入若干个数放入数组中,输入0结束输入并放在最后一个元素中。 给定程序modi.c中函数fun的功能是: 计算数组元素中值为正数的平均值(不包括0)。 例如: 数组中元素中的值依次为: 39,-47,21,2,-8,15,0, 则程序的运行结果为: 19.250000。 请改正函数fun中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include #include doublefun(intx[]) { /************found************/ floatsum=0.0; intc=0,i=0; while(x[i]! =0) {if(x[i]>0){ sum+=x[i];c++;} i++; } /************found************/ sum=sum/c returnsum; } main() {intx[1000];inti=0; system("cls"); printf("\nPleaseentersomedata(endwith0): "); do {scanf("%d",&x[i]);} while(x[i++]! =0); printf("%f\n",fun(x)); } 9.给定程序modi.c中函数fun的功能是: 在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。 例如,调用fun函数之前给字符串输入: GABCDeFGH 调用后字符中的内容为: eGABCDFGH 请改正程序中的错误,使它能得出正确结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include fun(char*p) {charmax,*q;inti=0; max=p[i]; while(p[i]! =0) {if(max {max=p[i]; /************found************/ q=p+i; } i++; } /************found************/ while(q>p) {*q=*(q-1); q--; } p[0]=max; } main() {charstr[80]; printf("Enterastring: ");gets(str); printf("\nTheoriginalstring: ");puts(str); fun(str); printf("\nThestringaftermoving: ");puts(str);printf("\n\n"); } 10.给定程序modi.c中,函数fun的功能是: 应用递归算法求形参a的平方根,求平方根的迭代公式如下: 例如,2的平方根值为: 1.414214。 请改正程序中的错误,使它能得出正确结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include /************found************/ doublefun(doublea,doublex0) {doublex1,y; x1=(x0+a/x0)/2.0; /************found************/ if(fabs(x1-x0)>0.00001) y=fun(a,x1); elsey=x1; returny; } main() {doublex; printf("Enterx: ");scanf("%lf",&x); printf("Thesquarerootof%lfis%lf\n",x,fun(x,1.0)); } 11.给定程序modi.c的功能是: 读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。 例如,若输入整数: 2310,则应输出: 2、3、5、7、11。 请改正程序中的语法错误,使程序能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include"conio.h" #include"stdio.h" #include"windows.h" /************found************/ Isprime(n); {inti,m; m=1; for(i=2;i /************found************/ if(! (n%i)) {m=0;break;} return(m); } main() {intj,k; system("cls"); 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"); } 12.给定程序modi.c中函数fun的功能是: 根据输入的三个边长(整型值),判断能否构成三角形: 构成的是等边三角形,还是等腰三角形。 若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include intfun(inta,intb,intc) {if(a+b>c&&b+c>a&&a+c>b){ if(a==b&&b==c) /**************found**************/ return3; elseif(a==b||b==c||a==c) return2; /**************found**************/ elsereturn1; } elsereturn0; } main() {inta,b,c,shape; printf("\nInputa,b,c: ");scanf("%d%d%d",&a,&b,&c); printf("\na=%d,b=%d,c=%d\n",a,b,c); shape=fun(a,b,c); printf("\n\nTheshape: %d\n",shape); } 13.给定程序MODI.C中函数fun的功能是: 计算整数n的阶乘。 请改正程序中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include doublefun(intn) { doubleresult=1.0; while(n>1&&n<170) /*********found*********/ result*=(double)n--; /*********found*********/ returnresult; } main() { intn; printf("Enteraninteger: "); scanf("%d",&n); printf("\n\n%d! =%lg\n\n",n,fun(n)); } 14.给定程序modi.c中,fun函数的功能是: 将n个无序整数从小到大排序。 请改正程序中的错误,使它能得出正确结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include #include #include fun(intn,int*a) {inti,j,p,t; for(i=j+1;i {p=j; /************found************/ for(i=j+1;i if(a[p]>a[i]) /************found************/ p=i; if(p! =j) {t=a[j];a[j]=a[p];a[p]=t;} } } 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]={9,3,0,4,1,2,5,6,8,10,7},n=11; system("cls"); printf("\n\nBeforesorting%dnumbers: \n",n);putarr(n,aa); fun(n,aa); printf("\nAftersorting%dnumbers: \n",n);putarr(n,aa); } 15.给定程序modi.c中,函数fun的功能是: 将一个由八进制数字组成的字符串转换为与其面值相等的十进制整数。 规定输入的字符串最多只能包含5位8进制数字。 例如,若输入77777,则输出将是32767。 请改正程序中的错误,使它能得出正确结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include #include intfun(char*p) {intn; /************found************/ n=*p-'0'; p++; while(*p! =0) { /************found************/ n=n*8+*p-'0'; p++; } returnn; } main() {chars[6];inti;i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 改错
![提示](https://static.bdocx.com/images/bang_tan.gif)