您好,欢迎访问三七文档
1第1题【程序改错】功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。------------------------------------------------------*/#includeconio.h#includestdio.h#includestring.hvoidfun(char*s,char*t){/**********FOUND**********/inti;sl=strlen(s);for(i=0;isl;i++)/**********FOUND**********/t[i]=s[sl-i];for(i=0;isl;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……2例如:若n=5,则应输出:8.391667。------------------------------------------------------*/#includeconio.h#includestdio.h/**********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。------------------------------------------------------*/#includeconio.h#includestdio.h3sortpb(intn,int*a){/**********FOUND**********/inti,j,p,tfor(j=0;jn-1;j++){p=j;for(i=j+1;in;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);}4main(){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。------------------------------------------------------*/#includestdio.h#includestring.hmain(){intn,s;/**********FOUND**********/s==n=0;/**********FOUND**********/while(s1000){++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第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。------------------------------------------------------*/#includeconio.h#includestdio.h#defineN20voidfun(int*a,intn){intk,m1,m2,max1,max2,t;max1=max2=-32768;m1=m2=0;for(k=0;kn;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;in;i++)printf(%d,b[i]);printf(\n);6fun(b,n);for(i=0;in;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。请改正程序中的语法错误,使程序能得出正确的结果。------------------------------------------------------*/#includeconio.h#includestdio.h/**********FOUND**********/isPrime(integern){inti,m;m=1;for(i=2;in;i++)/**********FOUND**********/if(n%i){m=0;break;}/**********FOUND**********/returnn;}main(){intj,k;printf(\nPleaseenteranintegernumberbetween2and10000:);7scanf(%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).returnm;第7题【程序改错】--------------------------------------------------------功能:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换,输出数组元素。------------------------------------------------------*/#includestdio.hmain(){inta[10];voidinput();voidoutput();voidmax_min();input(a,10);max_min(a,10);output(a,10);}voidinput(int*arr,intn){int*p,i;p=arr;printf(pleaseenter10integers:\n);for(i=0;in;i++)/**********FOUND**********/scanf(%d,p);}voidmax_min(int*arr,intn){int*min,*max,*p,t;8min=max=arr;for(p=arr+1;parr+n;p++)/**********FOUND**********/if(*p*max)max=p;elseif(*p*min)min=p;t=*arr;*arr=*min;*min=t;/**********FOUND**********/if(max=arr)max=min;t=*(arr+n-1);*(arr+n-1)=*max;*max=t;}voidoutput(int*arr,intn){int*p,i;p=arr;printf(Thechangedarrayis:\n);/**********FOUND**********/while(i=0;in;i++)printf(%3d,*p++);printf(\n);}答案:1).scanf(%d,p++);或scanf(%d,arr[i]);或scanf(%d,p+i);或scanf(%d,arr+i);2).if(*p*max)或if(*max*p)3).if(max==arr)4).for(i=0;in;i++)或for(i=0;ni;i++)或for(p=arr;parr+n;)或for(i=0;i=n-1;i++)或for(i=0;n-1=i;i++)或for(p=arr;p=arr+n-1;)或for(p=arr;arr+n-1=p;)第8题【程序改错】--------------------------------------------------------功能:求出在字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输
本文标题:C语言程序改错题
链接地址:https://www.777doc.com/doc-7026059 .html