c语言二级改错题答案.docx
- 文档编号:23463018
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:105
- 大小:1.24MB
c语言二级改错题答案.docx
《c语言二级改错题答案.docx》由会员分享,可在线阅读,更多相关《c语言二级改错题答案.docx(105页珍藏版)》请在冰豆网上搜索。
c语言二级改错题答案
改错题
1、
#include
#include
typedefstructaa
{intdata;
structaa*next;
}NODE;
intfun(NODE*h)
{intmax=-1;
NODE*p;
/***********found**********/
p=h;p=h->next;/*h指向的是头节点,题目要求不要头节点,那么我们从第2个结点开始*/
while(p)
{if(p->data>max)
max=p->data;
/***********found**********/
p=h->next;p=p->next;/*链表中的指针后移*/
}
returnmax;
}
outresult(ints,FILE*pf)
{fprintf(pf,"\nThemaxinlink:
%d\n",s);}
NODE*creatlink(intn,intm)
{NODE*h,*p,*s;
inti;
h=p=(NODE*)malloc(sizeof(NODE));h->data=9999;
for(i=1;i<=n;i++)
{s=(NODE*)malloc(sizeof(NODE));
s->data=rand()%m;s->next=p->next;
p->next=s;p=p->next;
}
p->next=NULL;
returnh;
}
outlink(NODE*h,FILE*pf)
{NODE*p;
p=h->next;
fprintf(pf,"\nTHELIST:
\n\nHEAD");
while(p)
{fprintf(pf,"->%d",p->data);p=p->next;}
fprintf(pf,"\n");
}
main()
{NODE*head;intm;
head=creatlink(12,100);
outlink(head,stdout);
m=fun(head);
printf("\nTHERESULT:
\n");outresult(m,stdout);
}
2、
#include
doublefun(intm)
{doubley=1.0;
inti;
/**************found**************/
for(i=2;i /**************found**************/ y-=1/(i*i);y-=1.0/(i*i);/*i是整型等号右边都是整型,得到结果也是整型,我们想要的是实型所以,要求1改成1.0*/ return(y); } main() {intn=5; printf("\nTheresultis%lf\n",fun(n)); } 3 #include #include char*fun(chartt[]) { inti; for(i=0;tt[i];i++) /**********found***********/ if(('a'<=tt[i])||(tt[i]<='z'))if(('a'<=tt[i])&&(tt[i]<='z'))/*很明显,这个地方是并且,用&&*/ /**********found***********/ tt[i]+=32;tt[i]-=32;/*小写变大写是减去32*/ return(tt); } main() { chartt[81]; printf("\nPleaseenterastring: "); gets(tt); printf("\nTheresultstringis: \n%s",fun(tt)); } 4 #include #include floatfun(floatnum) {ints; floatn,t,pi; t=1;pi=0;n=1;s=1; /**************found**************/ while(t>=num)while(fabs(t)>=num)/*这里的t可能会是负数,所以要取绝对值用函数fabs()来实现*/ { pi=pi+t; n=n+2; s=-s; /**************found**************/ t=s%n;t=s/n;/*这里对应题目是除法*/ } pi=pi*4; returnpi; } main() {floatn1,n2; printf("Enterafloatnumber: "); scanf("%f",&n1); n2=fun(n1); printf("%6.4f\n",n2); } 5 #include intfun(int*x,inty) { intt; /**************found**************/ t=x;x=y;t=*x;*x=y;/*这里的x是指针变量,可以通过间址运算符*来运算,*x就是变量a*/ /**************found**************/ return(y);returnt;/*返回的值给变量b,应是原来a的内容,也就是*x的内容*/ } main() { inta=3,b=8; printf("%d%d\n",a,b); b=fun(&a,b); printf("%d%d\n",a,b); } 6 #include voidfun(longs,long*t) {intd; longsl=1; /************found************/ t=0;*t=0;/*t是指针变量*/ while(s>0) {d=s%10; /************found************/ if(d%2==0)if(d%2! =0)/*这里应该是留下奇数*/ {*t=d*sl+*t; sl*=10; } s/=10; } } main() {longs,t; printf("\nPleaseenters: ");scanf("%ld",&s); fun(s,&t); printf("Theresultis: %ld\n",t); } 7 #include intfun(inta,intb) {intr,t; if(a /************found************/ t=a;b=a;a=t; } r=a%b; while(r! =0) {a=b;b=r;r=a%b;} /************found************/ return(a);return(b);/*这里b存放的最大公约数*/ } main() {intnum1,num2,a; printf("Inputnum1num2: ");scanf("%d%d",&num1,&num2); printf("num1=%dnum2=%d\n\n",num1,num2); a=fun(num1,num2); printf("Themaximuncommondivisoris%d\n\n",a); } 8 #include /**************found**************/ fun(intn)doublefun(intn)/*根据函数被使用的类型,或者返回值得到函数类型是double*/ {inta=2,b=1,c,k; doubles=0.0; for(k=1;k<=n;k++) {s=s+1.0*a/b; /**************found**************/ c=a;a+=b;b+=c;c=a;a+=b;b=c;/*根据题目要求来,看出来b=c*/ } return(s); } main() {intn=5; printf("\nThevalueoffunctionis: %lf\n",fun(n)); } 9 #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**********/ returnb;retrunt;/*算了好久,算出来的t,当然是返回t啦*/ } 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**********/ t[i+1]=findmid(a,b,c);x[i+1]=findmid(a,b,c);/*最终结果要放在x数组中*/ } } 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"); } 10 #include /************found************/ voidfun(longs,longt)voidfun(longs,long*t)/*这里的t是指针变量,应该定义的时候有**/ {longsl=10; s/=10; *t=s%10; /************found************/ while(s<0)while(s>0)/*很明显,这里的条件不对嘛*/ {s=s/100; *t=s%10*sl+*t; sl=sl*10; } } main() {longs,t; printf("\nPleaseenters: ");scanf("%ld",&s); fun(s,&t); printf("Theresultis: %ld\n",t); } 11 #include intfun(intm) {intk=2; while(k<=m&&(m%k)) /************found************/ k++k++;/*语句少了分号*/ /************found************/ if(m=k)if(m==k)/*这里是比较,不是赋值,要用==是两个等号*/ return1; elsereturn0; } main() {intn; printf("\nPleaseentern: ");scanf("%d",&n); if(fun(n))printf("YES\n"); elseprintf("NO! \n"); } 12 #include intfun(intm) {inti,k; for(i=m+1;;i++){ for(k=2;k /**************found**************/ if(i%k! =0)if(i%k==0)/*这里是能被整除的时候break*/ break; /**************found**************/ if(k=i)/*内层的for循环的条件不是break结束也就是从来没有被整除过,最后得到的是素数*/ return(i); } } voidmain() { intn; n=fun(20); printf("n=%d\n",n); } 13 #include intfun(doublex[],intn) { /************found************/ intj,c=0,doublexa=0.0;intj,c=0;doublexa=0.0;/*定义完一种类型之后,应该以分号结束*/ for(j=0;j xa+=x[j]/n; printf("ave=%f\n",xa); for(j=0;j /************found************/ if(x[j]=>xa)if(x[j]>=xa)/*大于等于的符号怎么写,一定看清楚了哦*/ c++; returnc; } main() {doublex[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763}; printf("%d\n",fun(x,8)); } 14 #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];s[j++]=s[i];/*s[j]被赋值了之后,j要++运算,以便s[j]是下一个元素*/ /**********found**********/ s[j]="\0";s[j]=’\0’;/*这里是字符0不是字符串0*/ } main() {charitem[80]; printf("\nEnterastring: ");gets(item); printf("\n\nThestringis: \"%s\"\n",item); fun(item); printf("\n\nThestringofchangingis: \"%s\"\n",item); } 15 #include #include #defineM10 inta[M][M]={0}; /**************found**************/ voidfun(int**a,intm)voidfun(inta[M][M],intm)/*这里定义变量能够接受具体二维数组a[M][M],如果不知道怎么定义,直接照抄数组原来的定义都可以*/ {intj,k; for(j=0;j for(k=0;k /**************found**************/ a[j][k]=k*j;a[j][k]=(k+1)*(j+1);/*这里是根据题目要求,大家可以算出来第一个数字应该怎么得到*/ } main() {inti,j,n; printf("Entern: ");scanf("%d",&n); fun(a,n); for(i=0;i {for(j=0;j printf("%4d",a[i][j]); printf("\n"); } } 16 #include longfun(intg) { /**********found**********/ switch(g);switch(g)/*switch()后面没有分号*/ {case0: return0; /**********found**********/ case1;case2: return1;case1: case2: return1;/*case1后面应该冒号case之后必须有冒号*/ } return(fun(g-1)+fun(g-2)); } main() {longfib;intn; printf("Inputn: ");scanf("%d",&n);printf("n=%d\n",n); fib=fun(n); printf("fib=%d\n\n",fib); } 17 #include doublefun(doubleq) {intn;doubles,t; n=2; s=2.0; while(s<=q) { t=s; /************found************/ s=s+(n+1)/n;s=s+(n+1.0)/n;/*这里的n是整形,(n+1)/n得到的结果也肯定是整形,而我们要得到实型/ n++; } printf("n=%d\n",n); /************found************/ returns;returnt;/*如果是returns根据循环条件会多加了一项所以返回时加最后之前的t*/ } main() { printf("%f\n",fun(50)); } 18 #include intfun(intk) {intm=0,mc=0; while((k>=2)&&(mc<10)) { /************found************/ if((k%13=0)||(k%17=0))if((k%13==0)||(k%17==0))/*这里是比较不是赋值,所以用两个连续的等号==*/ {m=m+k;mc++;} k--; } returnm; /************found************/ _____}/*函数体结束的时候用}结束*/ main() { printf("%d\n",fun(500)); } 19 #include #defineN10 /************found************/ voidfun(inta[],intm)intfun(inta[],intm)/*根据主函数调用fun函数的,可以看到要求fun函数返回的是个int型*/ {intlow=0,high=N-1,mid; while(low<=high) {mid=(low+high)/2;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 二级 改错 答案