2012年C语言上机题库改错_第1页
2012年C语言上机题库改错_第2页
2012年C语言上机题库改错_第3页
2012年C语言上机题库改错_第4页
免费预览已结束,剩余91页可下载查看

下载本文档

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

文档简介

2012年C语言上机考试改错题题库/*N个有序整数数列已放在ー维数组中,给定程序modi.c中,函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下标值;反之,返回ー1。折半查找的基本算法是:每次查找前先确定数组中待査的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。请改正程序中的错误,使它能得出正确结果。・/#include<stdio.h>#defineN10/***********[************/voidfun(inta[],intm){intlow=0,high=N-l,mid;while(low<=high){mid=(low+high)/2;if(m<a[mid])high=mid-l;/************^^rror************/elseif(m>=a[midl)low=mid+l;elsereturn(mid);}retum(-l);)main(){inti,a[N]={-3,479,13,45,67,89,100,180},k,m;printf("a数组中的数据如下:り;for(i=0;i<N;i++)printf("%d",a[i]);printf("Enterm:");scanf("%d",&m);k=fun(a,m);if(k>=0)printf("m=%d,index=%d\n",m,k);elseprintf("Notbefound!\n");}【改错1】正确【学生答案】voidfiin(inta[],intm)【参考答案】fun(inta[],intm)【改错2】错误【学生答案】elseif(m>=a[midl)【参考答案】elseif(m>a[mid])elseif(a[midl<m)elseif(m-a[mid]>0)elseif(a[midl-m<0)elseif(m-almid])elseif(!(a[mid]=m))/・给定程序modi.c中函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给numl和num2分别输入49和21,则输出的最大公约数为7;若给numl和num2分别输入27和81,则输出的最大公约数为27。请改正程序中的错误,使它能得出正确结果。*/#include<stdio.h>intfun(inta,intb){intr,t;if(a<b)/************E: r*米**********/{a=t;b=a;t=a;}r=a%b;while(r!=0){a=b;b=r;r=a%b;}/************E:rroi*************/retum(a);)main(){intnuml,num2,a;printf(HInputnumlnum2:,,);scanf(,,%d%d",&numl,&num2);printf(Hnum1=%dnum2=%d\n\nM,numl,num2);a=fun(numl,num2);printf("Themaximuncommondivisoris%d\n\n",a);)【改错1】错误【学生答案】{a=t;b=a;t=a;}【参考答案】{t=a;a=b;b=t;}{t=b;b=a;a=t;}【改错2】错误【学生答案】return(a);【参考答案】return(b);returnb;/・给定程序modi.c中函数fun的功能是:统计ー个无符号整数中各位数字值为零的个数,通过形参传回主函数:并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数3080〇,则数字值为零的个数为3,各位上数字值最大的是8。请改正函数fiin中指定部位的错误,使它能得出正确的结果。・/#include<stdio.h>intfun(unsignedn,int*zero){intcount=0,max=0,t;do{t=n%10;if(t=O)count++;ifi(max<t)max=t;n=n/10;}while(n);zero=count;returnmax;)main(){unsignedn;intzero,max;printf(n\nlnputn(unsigned):n);scanf(n%dH,&n);max=fim(n,&zero);printf(M\nTheresult:max=%d zero=%d\n11,max,zero);)【改错1】错误【学生答案】if(t=O)【参考答案】if(t==O)if(!t)if(O==t)【改错2】错误【学生答案】zero=count;【参考答案】*zero=count;/・给定程序modi.c中函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。・/#include<conio.h>#include<stdio.h>#include<string.h>#include<windows.h>#defineN80intfun(char*s,char*t){intn;char*p,*r;n=0;while(*s){P=s;/*********E:rror**********/r=p;while(*r)if(*r==*p){r++;p++;}elsebreak;/********* **********/if(*r=0)n++;s++;}returnn;)main(){chara[N],b[N];intm;systemC'cls0);printf(M\nPleaseenterstringa:gets(a);printf("ヽnPleaseentersubstringb:n);gets(b);m=fun(a,b);printf(M\nTheresultis:m=%d\nH,m);)【改错1】错误【学生答案】r=p;【参考答案】r=t;【改错2】错误【学生答案】if(*r=〇)【参考答案】if(*r=='\O')if('\O'==*r)if(*r==NULL)if(NULL==*r)if(r[O]==NULL)if(NULL==r[OJ)if(!r[O])if(!(*r))if(r[O]=='\O')if('\O'==r[O])/・给定程序modi.c中,函数fun的功能是:将十进制正整数m转换成k(2Wkく9)进制数,并按位输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)〇请改正程序中的错误,使它能得出正确结果。・/#include<conio.h>#include<stdio.h>#include<windows.h>voidfun(intm,intk)intaa[20],i;for(i=0;m;i++)/************ ***********/aa[i]=m/k;m/=k;)/***********[************/for(;i;i-)printf("%d",aa[i]);}main()(intb,n;systemC'cls0);printf(M\nPleaseenteranumberandabase:\nH);scanf(M%d%dn,&n,&b);fun(n,b);printf(H\n");)【改错1】错误【学生答案】aa[i]=m/k;【参考答案】aa[i]=m%k;【改错2】错误【学生答案】for(;i;i-)【参考答案】for(i=i-l;i>=0;i—)for(i=i-l;i>=0;-i)for(i=i-l;i>=0;i=i-l)for(i=i-l;i>=0;i-=l)for(i=i-l;i>=0;i=-l+i)for(i-=l;i>=0;i-)for(i-=l;i>=0;-i)for(i-=l;i>=O;i=i-l)for(i-=l;i>=0;i-=l)for(i—;i>=O;i—)for(i—;i>=O;-i)for(i—;i>=O;i=i-l)for(i—;i>=O;i-=l)for(i—;i>=0;i=-14-i)for(-i;i>=0;i-)for(-i;i>=0;-i)for(-i;i>=0;i=i-l)for(—i;i>=O;i-=l)for(—i;i>=O;i=-l+i)for(i-=l;i>=O;i=-l+i)/・给定程序MODI1.C中fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的"单词”是指由空格隔开的字符串)。例如,若输入"Iamastudenttotaketheexamination.",则应输出"IaMAstudenTtOtakEthEexamination."〇请修改程序中的错误之处,使它能得出正确的结果。*/#include<ctype.h>#include<stdio.h>#include<string.h>voidfun(char*p)intk=0;for(;*p;p++)if(k)/********** ***********/if(P==")k=0;/*********************/*(p-1)=toupper(*(p-1))})elsek=1;main()(charchrstr[64];intd;print出M\nPleaseenteranEnglishsentencewithin63letters:");gets(chrstr);d=strlen(chrstr);chrstr[dl=1';chrstr[d+l]=0;printf(H\n\nBeforechanging:\n%s",chrstr);fun(chrstr);printf(M\nAfterchanging:\n%s”,chrstr);)【改错1】错误【学生答案】if(P==")【参考答案】if(*p=='')if(''==*p)if(*p==32)if(32==*p)【改错2】错误【学生答案】*(p-1)=toupper(*(p-1))【参考答案】*(p-1)=toupper(*(p-1));/・给定程序modi.c中函数fun的功能是:在字符串的最前端加入n个・号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79。请改正函数ftin中指定部位的错误,使它能得出正确的结果。・/#include<stdio.h>#include<string.h>#include<conio.h>#include<windows.h>voidfiin(chars[],intn)(chara[801,*p;inti;/**********E:rr()r***********/s=p;for(i=0;i<n;i++)a[i]=**t;do{a[i]=*p;i++;/*********************/}while(*p);a[i]=0;strcpy(s,a);)main(){intn; chars[80];system(nclsn);printf("\nEnterastring:");gets(s);printf(M\nThestringV%sV\nM,s);printf("ヽnEntern(numberof*):");scanf("%dH,&n);fun(s,n);printf("ヽnThestringafterinster:\M%s\"\nH,s);}【改错1】错误【学生答案】s=p;【参考答案】P=S;p=&s[0];【改错2】错误【学生答案】}while(*p);【参考答案】}while(*p++);}while(*(p++));/・给定程序modi.c中,fun函数的功能是:先从键盘上输入ー个3行3列矩阵的各个元素的值,然后输出主对角线元素之积。请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。・/#include<stdio.h>intfun()inta[3][3],sum;inti,j;/************E:r************/for(i=0;i<3;i++){for(j=O;j<3;j++)/************卜:rr************/scanf("%d"a[il[j]);}for(i=0;i<3;i++)sum=sum*a[i][i];printf("Sum=%d\n",sum);)main(){fun();}【改错1】错误【学生答案】【参考答案】sum=l;【改错2】错误【学生答案】scanfC1%dna[i][j]);【参考答案】scanf("%d,",&a[i][j]);scanf("%d",&a[i][j]);/・给定程序modi.c中,函数fun的功能是:从整数1到55之间,选出能被3整除、且至少有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中a!中放个位数,a2放十位数。请改正程序中的错误,使它能得出正确结果。・/#include<stdio.h>fun(int*b){intk,al,a2,i=0;for(k=10;k<=55;k++)/************e:rror************/a2=k%10;al=k-a2*10;if((k%3==0&&a2==5)ll(k%3==0&&al==5)){b[i]=k;i++;}}/************E:r*米**********/returnk;)main(){inta[100],k,m;m=fun(a);printf("Theresultis:\nH);for(k=0;k<m;k+4-)printf(,,%4d',,a[k]);printf("\n”);}【改错1】错误【学生答案】a2=k%10;【参考答案】a2=k/10;【改错2】错误【学生答案】returnk;【参考答案】returni;return(i);/・给定程序M0DI1.C中函数fun的功能是:交换主函数中两个变量的值。例如:若变量a中的值原为8,b中的原值为3。程序运行后a中的值为3,b中的值为8。请改正程序中的错误,使它能得出正确结果。*/#include<stdio.h>/*********Epj*or**********/voidfun(intx,inty){intt;/*********Error**********/t=x;x=y;y=t;)main(){inta,b;a=8;b=3;fun(&a,&b);printf("%d,%d\n0,a,b);)【改错1】错误【学生答案】voidfun(intx,inty)【参考答案】voidfun(int*x,int*y)【改错2】错误【学生答案】t=x;x=y;y=t;【参考答案】t=*x;*x=*y;*y=t;t=*y;*y=*x;*x=t;/・在主函数中从键盘输入若干个数放入数组中,输入〇结束输入并放在最后ー个元素中。给定程序modi.c中函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)o例如:数组中元素中的值依次为:39,-47,21,2,-8,15,0,则程序的运行结果为:19.250000。请改正函数fiin中的错误,使它能得出正确的结果。*/#include<conio.h>#include<stdio.h>#include<windows.h>doublefun(intx[])(/*********** ************/intsum=0.0;intc=0,i=0;while(x[i]!=0){if(x[i]>0){sum+=x[i];C++;}i++;}/***********[************/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));)【改错1】错误【学生答案】intsum=0.0;【参考答案】floatsum=0.0;doublesum=0.0;【改错2】错误【学生答案】sum\=c;【参考答案】sum=sum/c;sum/=c;/・给定程序M0DI1.C中函数ftin的功能是:将tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。例如,若输入“Ab,cD”,则输出“AB,CD”。请改正程序中的错误,使它能得出正确的结果。ッ#include<stdio.h>#include<string.h>char*fun(chartt[])(inti;for(i=0;tt[i];i++)/**********Error***********/if<("a,<=tt[i])11(tt[i]<='z'))/**********Error***********/tt[i]+=32;return(tt);)main()chartt[81];printf("\nPleaseenterastring:");gets(tt);printf("\nTheresultstringis:\n%s",fun(tt));J【改错1】错误【学生答案】if<("a,<=tt[i])11(tt[i]<="z'))【参考答案】if<('a><=tt[i])&&(tt[i]<='z"))if('a'<=tt[i]&&tt[i]<='z')if((tt[i]>='a')&&(tt[i]<='z"))if(tt[iJ>='a"&&ttLi]<='z')if((tt[i]>='a')&&('z'>=tt[i]))if(tt[i]>='a"&&'z'>=tt[i])【改错2】错误【学生答案】tt[i]+=32;【参考答案】tt[i]-=32;tt[i]=tt[i]-32;tt[i]=-32+tt[i];tt[i]-="a'-'A';tt[i]=tt[i]-'a'+'A';tt[i]=tt[i]-('a-A');tt[i]+='A'-"a';tt[i]=tt[i]+'A'-'a';tt[i]=tt[i]+('A'-'a');/・给定程序modi.c是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并旦作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。*/#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<windows.h>typedefstructaa{intdata;structaa*next;}NODE;fiin(NODE*h){intmax="l;NODE*p;/*********************/P=h;while(p){if(p->data>max)max=p->data;/***********卜:**********/p=h->next;)returnmax;)outresult(ints,FILE*pf){fprintf(pf,H\nThemaxinlink:%d\n",s);}NODE*creatlink(intn,intm){NODE*h,*p,*s;inti;h=p=(NODE*)malloc(sizeof(NODE));h->data=9999;for(i=l;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,H->%dn,p->data);p=p->next;}fprintf(pf,,,\nM);)main(){NODE*head;intm;system(nclsn);head=creatlink(12,100);outlink(head,stdout);m=fun(head);printf(M\nTHERESULT:\n");outresult(m,stdout);)【改错1】错误【学生答案】p=h;【参考答案】p=h->next;p=(*h).next;p=h[0J.next;【改错2】错误【学生答案】p=h->next;【参考答案】p=p->next;p=(*p).next;p=p[〇].next;/・给定程序modi.c中,ftin函数的功能是:先从键盘上输入ー个3行3列矩阵的各个元素的值,然后输出主对角线元素之积。请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。・/#include<stdio.h>intfun()inta[3][3],sum;inti,j;/************E:rro「************/for(i=0;i<3;i++){for(j=O;j<3;j++)/************E:rror************/scanf("%d"a[il[j]);}for(i=0;i<3;i++)sum=sum*a[i][i];printf("Sum=%d\n",sum);Jmain(){fun();}【改错1】错误【学生答案】【参考答案】sum=l;【改错2】错误【学生答案】scanf(n%dna[ij[jj);【参考答案】scanf("%d,",&a[i][jl);scanf("%d",&a[i][j]);/・给定程序modi.c中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。请改正函数ftin中指定部位的错误,使它能得出正确的结果。・/#include<conio.h>#include<stdio.h>#include<windows.h>/**********E:rr()r**********/charfun(char*s,char*t){intsl=O,tl=O;char*ss,*tt;ss=s;tt=t;while(*ss){sl++;/********************/(*ss)++;}while(*tt){tl++;/********************/(*tt)++;)if(tl>sl)returnt;elsereturns;)main(){chara[80],b[80];systemC'cls*1);printf("ヽnEnterastring:");gets(a);printf("ヽnEnterastringagain:“);gets(b);printf("ヽnThelongeris:\n\n\"%s\"\n",fun(a,b));)【改错1】错误【学生答案】charfun(char*s,char*t)【参考答案】char*fun(char*s,char*t)【改错2】错误【学生答案】(*ss)++;【参考答案】SS++;++SS;SS=SS+1;ss+=l;*SS+4-;*(++ss);ss=l+ss;*(ss++);(ss)++;【改错3】错误【学生答案】(*tt)++;【参考答案】tt++;++tt;tt=tt+1;tt+=1;*tt++;*(tt++);*(++tt);(tt)++/・给定程序MODH.C中函数ftin的功能是:根据以下公式求值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。请改正程序中的错误,使它能得出正确结果。*/#include<math.h>#include<stdio.h>doublefun(doubleeps){doubles,t;s=0.0;/************ r************/t=0;while(t>eps){s+=t;t=t*n/(2*n+l);n++;}/************^^rror************/return(s);)main(){doublex;printf(M\nPleaseenteraprecision:");scanf("%lF',&x);printf(M\neps=%lf,Pi=%lf\n\nH,x,fun(x));)【改错1】错误【学生答案】t=0;【参考答案】t=l;【改错2】错误【学生答案】return(s);【参考答案】return(2*s);return(s*2);return(s-Fs);return2*s;returns*2;returns+s;/・给定程序modi.c中,函数ftin的功能是:将字符串a中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格。例如,在调用fun函数之前给字符串a输入:ABCDEFGHIJK调用函数之后,字符串b中的内容则为:ABCDEFGHIJK请改正程序中的错误,使它能得出正确结果。*/#include<stdio.h>voidfun(char*p,char*b){inti,k=O;while(*p){i=l;/************^^rror************/while(iv3ll*p){b[kl=*p;k++;p++;i++;)if(*P)(/************Hrror************/b[k]=')}b[k]='\0';}main(){chara[8O],bf8O];printf("Enterastring: ");gets(a);printf("Theoriginalstring:");puts(a);fun(a,b);printf("\nThestringafterinsertspace:");puts(b);printf("\n\n");)【改错1】错误【学生答案】while(i<3ll*p)【参考答案】while(i<4&&*p)while(i<=3&&*p)while(i<3+l&&*p)while(i<(3+l)&&*p)while(*p&&i<4)while(*p&&i<=3)while(*p&&i<3+l)while(*p&&i<(3+l))while((i<4)&&*p)while((i<=3)&&*p)while((i<3+l)&&*p)while((i<(3+l))&&*p)while(*p&&(i<4))while(*p&&(i<=3))while(*p&&(i<3+l))while(*p&&(i<(3+l)))while(i<l+3&&*p)while(i<(l+3)&&*p)while(*p&&i<l+3)while(*p&&i<(l+3))【改错2】错误【学生答案】bfk]='【参考答案】b[k++]='b[(k=k+l,k-l)]='b[(k+=l,k-l)]='b[(k++,k-l)]=";b[(++k,k-l)]=";b[(k,k++)]='bL(k,k=k+l)]='b[(k,k=l+k)J='b[(k,++k)]='b[(k,k+=l)]='/・给定程序modi.c中,函数fun的功能是:求出以下分数序列的前n项之和。和值通过函数值返回main函数。例如,若n=5,则应输出:8.391667o请改正程序中的错误,使它能得出正确结果。*/#include<conio.h>#include<stdio.h>#include<windows.h>/************E:r*米**********/fun(intn){inta,b,c,k;doubles;s=0.0;a=2;b=l;fbr(k=l;k<=n;k++){/************ r************/s=s+(Double)a/b;c=a;a=a+b;b=c;}returns;)main(){intn=5;system('^cls^^);printf("\nThevalueoffunctionis:%lf\n",fun(n));)【改错1】错误【学生答案】fiin(intn)【参考答案】doublefun(intn)floatfun(intn)【改错2】错误【学生答案】s=s+(Double)a/b;【参考答案】s=s+(double)a/b;s=(double)a/b+s;s+=(double)a/b;s=s+(float)a/b;s=(float)a/b+s;s+=(float)a/b;s=s+1.0*a/b;s+=1.0*a/b;s=1.0*a/b+s;s=s+l.*a/b;s+=l.*a/b;s=l.*a/b+s;s=s+a*1.0/b;s=a*1.0/b+s;s=s+(double)a/(double)b;s+=(double)a/(double)b;s=(double)a/(double)b+s;s=s+(float)a/(float)b;s+=(float)a/(float)b;s=(float)a/(float)b+s;s=s+a/(double)b;s=a/(double)b+s;s+=a/(double)b;s=s+a/(float)b;s=a/(float)b+s;s+=a/(float)b;/・给定程序modi.c中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。伤如,当a所指字符串中的内容为"abcdefg",b所指字符串中的内容为"1234"时,c所指数组中的内容应该为"a4b3c2dlefg";而当a所指字符串中的内容为"1234",b所指字符串中的内容为"abcdefg"时,c所指数组中的内容应该为"Ig2f3erdcba"o请改正程序中的错误,使它能得出正确结果。・/#include<conio.h>#include<stdio.h>#include<string.h>#include<windows.h>voidfun(char*a,char*b,char*c)inti,j;charch;i=0;j=strlen(b)-l;/************E:r************/while(i>j){ch=b[i];b[i]=b[j];b[j]=ch;i++;j-;}while(*all*b)/************E:r*米**********/{If(*a){*c二・a;c++;a++;}if(*b){*c=*b;c++;b++;})*c=0;)main()charsl[100],s2[100],¢[2001;system(Mclsn);printf("\nEntersistring:");scanf("%sn,sl);printf(M\nEnters2string:");scanf("%sn,s2);fun(sl,s2,t);printf("\nTheresultis:%s\n",t);}【改错1】错误【学生答案】while(i>j)【参考答案】while(i<j)while(j>i)while(i<=j)while(j>=i)while(i-j<0)while(i-j<=0)while(j-i>0)while(j-i>=0)while(!(i>=j))while(!(j<=i))while(!(i>j))while(!(j<i))while(!(i-j>=0))while(!(i-j>0))while(!(j-i<=0))while(!(j-i<0))【改错2】错误【学生答案】{If(*a){*c=*a;c++;a++;}【参考答案】{if(*a){*c=*a;c++;a++;}{if(*a!=O){*c=*a;c++;a++;}{if(*a!='\O,){*c=*a;c++;a++;}{if(*a){*c=*a;a++;c++;}{if(*a!=O){*c=*a;a++;c++;}{if(*a!=*\0*){*c=*a;a++;c++;}{if(*a){*c=*a;++c;++a;}{if(*a!=O){*c二・a;++c;++a;}{if(*a!O'){*c=*a;++c;++a;}{if(*a){*c二・a;++a;++c;}{if(*a!ニ0){*c二・a;++a;++c;}{if(*a!二'、〇'){*c二・a;++a;++c;}/・给定程序modi.c中函数fun的功能是:将s所指字符串中的字母转换为按

字母序列的后续字母(但Z转换为A,z转换为a),其它字符不变。请改正函数fiin中指定部位的错误,使它能得出正确的结果。*/#include<stdio.h>#include<ctype.h>#include<conio.h>#include<windows.h>voidfiin(char*s)/**********lError***********/while(*s!='@'){if(*s>='A'&&*s<='Z'II*s>='a"&&*s<='z'){if(*s=='Z')*s='A';*s+=1;elseif(*s=="z')*s='a';*s+=1;else)/**********Error***********/(*s)++;))main(){chars[80];system(Hclsn);printf(M\nEnterastringwithlength<80.:\n\n");gets(s);printf("\nThestring:\n\n");puts(s);fun(s);printf(M\n\nTheCords:\n\n");puts(s);}【改错1】错误【学生答案】while(*s!='@')【参考答案】while(*s)while(*s!=0)while(0!=*s)while(*s!='\0,)whileドs!=O)while(ヽO'!=*s)while(s[0])while(s[0]!=0)while(s[0]!=,\0,)while(0!=s[0])while(,\O,!=sfO])【改错2】错误【学生答案】(*s)++;【参考答案】S++;s=s+l;s+=l;++S;S=14-S;*s++;*(s++);*(++s);/・给定程序modi.c中,函数fun的功能是:从字符串s中删除所有小写字母Co请改正程序中的错误,使它能得出正确结果。*/#include<stdio.h>voidfun(char*s){intij;for(i=j=0;s[i]!=ヘ〇’;i++)if(s[i]!='c')/*********** ************/s[j]=s[i];/*********** ************/s[i]='\0';}main(){chars[80];printf("Enterastring:");gets(s);printf("Theoriginalstring:");puts(s);fun(s);printf("Thestringafterdeleted:");puts(s);printf("\n\n");}【改错1】错误【学生答案】【参考答案】s[j++]=s[i];【改错2】错误【学生答案】s[i]='\O';【参考答案】sU]='\O';s[j]=O;/・给定程序modi.c中,函数fun的功能是:根据整型形参m的值,计算如下公式的值。例如:若m中的值为:5,则应输出:0.536389o请改正程序中的错误,使它能得出正确结果。・/#include<conio.h>#include<stdio.h>#include<windows.h>doublefun(intm){doubley=1.0;inti;/*********** ************/for(i=2;i<m;i++)/*********** ************/y-=l/(i*i);retum(y);)main(){intn=5;system(,,clsn);printf(',\nTheresultis%lf\nM,fun(n));)【改错1】错误【学生答案】for(i=2;i<m;i++)【参考答案】fbr(i=2;i<=m;i++)for(i=2;i<m+1;i++)for(i=2;i<(m+1);i++)for(i=2;i<l+m;i++)for(i=2;i<(l+m);i++)fbr(i=2;i<=m;++i)for(i=2;i<m+1;++i)for(i=2;iv(m+l);++i)for(i=2;i<l+m;++i)for(i=2;i<(l+m);++i)for(i=2;i<=m;i=i+1)for(i=2;i<m+1;i=i+1)for(i=2;i<(m+l);i=i+l)for(i=2;i<l+m;i=i+1)for(i=2;i<(l+m);i=i+l)for(i=2;i<=m;i+=l)for(i=2;i<m+l;i+=l)fbr(i=2;i<(m+l);i+=l)for(i=2;i<l+m;i+=l)for(i=2;i<(l+m);i+=l)for(i=2;i<=m;i=l+i)fbr(i=2;i<m+l;i=l+i)for(i=2;i<(m+l);i=l+i)for(i=2;i<l+m;i=l+i)for(i=2;i<(l+m);i=l+I)【改错2】错误【学生答案】y-=l/(i*i);【参考答案】y-=1.0/(i*i);y=y-1.0/(i*i);y=-1.0/(i*i)+y;y-=l./(i*i);y=y-l./(i*i);y=-l./(i*i)+y;y-=(float)l/(i*i);y=y-(float)l/(i*i);y=-(float)l/(i*i)+y;y-=(double)l/(i*i);y=y-(double)l/(i*i);y=-(double)l/(i*i)+y;y-=l/(1.0*i*i);y=y-l/(1.0*i*i);y=-l/(1.0*i*i)+y;y-=l/((float)i*i);y=y-l/((float)i*i);y=-1/((float)i*i)+y;y-=l/((double)i*i);y=y-l/((double)i*i);y=-l/((double)i*i)+y;/・给定程序modi.c中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正函数ftin中指定部位的错误,使它能得出正确的结果。*/#include<stdio.h>#include<conio.h>#include<windows.h>voidfun(char*s){inti,j;for(i=0,j=0;s[i]!='\0';i++)if(s[i]>='O'&&s[ij<='9')/**********lError**********/s[j]=s[i];/********************/〇”;)main(){charitem[80];system("clsu);printf(M\nEnterastring:");gets(item);printf(M\n\nThestringis:ヽ"%s\"\n",item);fun(item);printf("\n\nThestringofchangingis:\"%s\"\n",item);)【改错1】错误【学生答案】s[j]=s[i];【参考答案】s[j++]=s[i];{s[jj=s[i];j++;}{S|j]=s[i];j+=1;}{sUl=s[i];j=j+l;}{s[jl=s[i];++j;}{s|j]=s[i];j=l+j;}*(s+j++)=*(s+i);{*(s+j)=*(s+i);j++;}{*(s+j)=*(s+i);j+=l;}{*(s+j)=*(s+i);j=j+l;}{*(s+j)=*(s+i);++j;}{*(s+j)=*(s+i);j=l+j;}s[j]=s[i]j++;s[j]=s[ij,j+=l;sUl=s[i]j=j+l;s[j]=s[i],++j;sU]=s[i]j=l+j;*(s+j)=*(s+i),j++;*(s+j)=*(s+i),j+=l;*(s+j)=*(s+i),j=j+l;*(s+j)=*(s+i),++j;*(s+j)=*(s+i)j=l+j;【改错2】错误【学生答案】s[j]="\O";【参考答案】sU]='\O';s[j]=O;/・给定程序modi.c中,函数insert的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序:再把第四个字符插入到前三个字符中,……。待排序的字符串已在主函数中赋予。请改正程序中的错误,使它能得出正确的结果。*/#defineN80#include"stdio.h"#include"string.h"voidinsert(char*aa){inti,j,n;charch;/************E:rror************/n=stlen(aa);for(i=l;i<n;i4-+)/************卜:i*************/{c=aa[i];j=i-l;while«j>=0)&&(ch<aa[j])){aa[j+l]=aa[j];j-S}aa[j+l]=ch;))main(){chara[N]=MQWERTYUIOPASDFGHJKLMNBVCXZH;printff'Theoriginalstring: %s\nu,a);insert(a);printf("Thestringaftersorting:%s\n\n",a);)【改错1】错误【学生答案】n=stlen(aa);【参考答案】n=strlen(aa);【改错2】错误【学生答案】{c=aa[i];【参考答案】{ch=aa[i];{ch=*(aa+i);/・给定程序modi.c中函数fun的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为ー组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表

温馨提示

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

评论

0/150

提交评论