二级C语言题库-改错题_第1页
二级C语言题库-改错题_第2页
二级C语言题库-改错题_第3页
二级C语言题库-改错题_第4页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

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

文档简介

1.下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。和值通过函数值返回.例如,若n=5,则应输出8.391667.请改正程序中的错误,使其得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改的程序的结构!#include<stdio.h>voidfun(intn){inta,b,c,k;doubles;s=0.0;a=2;b=1;for(k=1;k<=n;k++){/*********** nd************Is=s+(Double)a/b;c=a;a=a+b;b=c;returns;main(){intn=5;printf("\nThevalueoffunctionis:%lf\n",fun(n));}【参考答案】(l)doublefun(intn)(2)s=s+(double)a/b;.下列给定程序中函数fun的功能是:统计substr所指的子符串在str所指的字符串中出现的次数。例如,若字符串为aaasIkaaas,子字符串为as,则应输出2.请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改的程序的结构!#include<stdio.h>intfun(char*str,char*substr){inti,j,k,num=O;/*********** nd************Ifor(i=0,str[i],i++)for(j=i,k=0;substr[k]==str[j];k++,j++)/************found************IIf(substr[k+l]=='\0'){num++;break;returnnum;main(){charstr[80],substr[80];printf("Inputastring:");gets(str);printf("Inputasubstring:");gets(substr);printf("%d\n",fun(str,substr));【参考答案】(l)for(i=0;str[i];i++)(2)if(substr[k+l]=='\0').下列给定程序中函数fun的功能是:实现两个变量值的交换,规定不允许增加语句和表达式。例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。请改正程序中的错误,使它得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>intfun(int*x,inty)intt;return(y);main()(inta=3,b=8;printf("%d%d\n",a,b);b=fun(&a,b);printf("%d%d\n",a,b);【参考答案】(l)t=*x;*x=y;(2)return(t);或returnt;.下列给定程序中函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,若numl和num2分别为49和21,则输出的最大公约数为7;若numl和num2分别为27和81,则输出的最大公约数为270请改正程序中的错误,使它能得出正确结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构。#include<stdio.h>intfun(inta,intb){intr,t;if(a<b){/************found************/t=a;b=a;a=t;}r=a%b;while(r!=0){a=b;b=r;r=a%b;}return(a);}main(){intnuml,num2,a;printf("Inputnumlnum2:");scanf("%d%d",&numl,&num2);printf("numl=%dnum2=%d\n\n",numl,num2);a=fun(numl,num2);printf("Themaximuncommondivisoris%d\n\n",a);【参考答案】t=a;a=b;b=t;return(b);或returnb;5.下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改的程序的结构!#include<stdio.h>voidfun(longs,long*t){intd;longsl=l;/************found************jt=0;while(s>0){d=s%10;/************found***:if(d%2==0){*t=d*si+*t;si*=10;}s/=10;}}main(){longs,t;printf("\nPleaseenters:");scanf("%ld",&s);第5页第5页fun⑸&t);printf("Theresultis:%ld\n",t);}【参考答案】(l)*t=O;(2)if(d%2!=0)或if(d%2==l)6.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21 例如,若给n输入7,则该项的斐波拉契数值为13。请改正程序中的错误,使它能得出正确结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构。#include<stdio.h>longfun(intg)/**********found**********/switch(g);{case0:return0;/**********found**********Icase1;case2:return1;return(fun(g-l)+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);【参考答案】(1)去掉分号(2)casel:case2:return1;7.下列给定程序中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。例如,若给a输入字符串:ABCDEFGKHIJK,调用函数后,字符数组b中的内容为:ABCDEFGHIJKO请改正程序中的错误,使它能得出正确结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构。#include<stdio.h>voidfun(char*p,char*b){inti,k=0;while(*p){i=l;while(i<=3&&*p){/**********found**********/b[k]=p;k++;p++;i++;}if(*P){/**********found**********/b[k++]="b[k]='\O';main()chara[80],b[80];printf("Enterastring: ");gets(a);printf("Theoriginalstring:");puts(a);fun(a,b);printf("\nThestringafterinsertspace:");puts(b);printf("\n\n");}【参考答案】b[k]=*p;b[k]=',;k++;.下列给定程序中函数fun的功能是:将tt所指字符串中的小写字母全部改为对应的大写字母,其它字符不变。例如,若输入"Ab,CD",则输出"AB,CD".请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>#include<string.h>char*fun(chartt[])inti;/********* nd***********Iif((,a><=tt[i])||(tt[i]<='z'))/**********fund***********Itt[i]+=32;return(tt);main()printf("\nPleaseenterastring:");gets(tt);printf("\nTheresultstringis:\n%s",fun(tt));}【参考答案】(l)if((tt[i]>=a')&&(tt[i]<=N)(2)tt[i]-=32;.下列给定程序中函数fun的功能是:用冒泡法对6个字符串进行升序排列。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>#include<string.h>#defineMAXLINE20fun(char*pstr[6]){inti,j;char*p;for(i=0;i<5;i++){for(j=i+l,j<6,j++)if(strcmp(*(pstr+i),*(pstr+j))>0)p=*(pstr+i);*(pstr+i)=pstr+j;*(pstr+j)=p;}}main(){inti;char*pstr[6],str[6][MAXLINE];for(i=0;i<6;i++)pstr[i]=str[i];printf("\nEnter6string(lstringateachline):\n");for(i=0;i<6;i++)scanf("%s",pstr[i]);fun(pstr);printf("Thestringsaftersorting:\n");for(i=0;i<6;i++)printf("%s\n",pstr[i]);}【参考答案】⑴for(j=i+1;j<6;j++)(2)*(pstr+i)=*(pstr+j);.下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>longfun(longnum){/*********** nd************I第10页第10页longk;do{k*=num%10;/************found************Inum\=10;}while(num);return(k);main(){longn;printf("\nPleaseenteranumber:");scanf("%ld",&n);printf("\n%ld\n",fun(n));【参考答案】(l)longk=l;(2)num/=10;.下列给定程序中函数fun的功能是:把从主函数中输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。例如,若输入的数为:551234,输出的结果应当是:a=55.0,b=34.0,c=12.0.请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1,C中,不要改动main函数,不得增行或删行,也不得更改程序的结构。#include<stdio.h>voidfun(float*a,float*b,float*c)/**********found**********jfloat*k;if(*a<*b){k=*a;*a=*b;*b=k;}if(*a>*c){k=*c;*c=*a;*a=k;}if(*b<*c){k=*b;*b=*c;*c=k;}}main(){floata,b,c;printf("Inputabc:");scanf("%f%f%f',&a,&b,&c);printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);fun(&a,&b,&c);printf("a=%4.1f,b=%4,1f,c=%4.1f\n\n",a,b,c);}【参考答案】(l)floatk;(2)if(*a<*c).下列给定程序中函数fun的功能是:逐个I:匕较p、q所指两个字符串对应位置上的字符,并把ASCH值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。例如,若主函数中a字符串为aBCDeFgH,b字符串为ABcd,则c中的字符串应为aBcdeFgH.请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改的程序的结构!#include<stdio.h>#include<string.h>voidfun(char*p,char*q,char*c)intk=1;while(*p!=*q){if(*p<*q)c[k]=*q;elsec[k]=*p;if(*p)p++;if(*q)q++;k++;}}main(){chara[10]="aBCDeFgH",b[10]="ABcd",c[80]={'\0');fun(a,b,c);printf("Thestringa:");puts(a);printf("Thestringb:");puts(b);printf("Theresult:");puts(c);}【参考答案】⑴intk=0;(2)while(*p||*q).下列给定程序中fun函数的功能是:求表达式s=aa...aa-...-aaa-aa-a(此处aa...aa表示n个a,a和n的值在1至9之间)例如,a=3,n=6,则以上表达式为:s=333333-33333-3333-333-33-3其值是296298.a和n是fun函数的形参,表达式的值作为函数值传回main函数。请改正程序中的错误,使它能计算出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>longfun(inta,intn)/************* nd**************Ilongs=0,t=1;for(j=0;j<n;j++)=t;for(j=1;j<n;j++){/************* nd**************It=t%10;return(s);main(){inta,n;printf("\nPleaseenteraandn:");scanf("%d%d",&a,&n);printf("Thevalueoffunctionis:%ld\n",fun(a,n));}【参考答案】(l)longs=0,t=0;出1="10;14.下列给定程序中函数fun的功能是:从整数1到55之间,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定函数中al放个位数,a2放十位数。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改的程序的结构!#include<stdio.h>intfun(int*b){intk,al,a2,i=0;for(k=10;k<=55;k++){/*********** nd************/a2=k/10;al=k-a2*10;jf((k%3==0&&a2==5)||(k%3==0&&al==5)){b[i]=k;i++;})/*********** nd************/returnk;)main(){inta[100],k,m;m=fun(a);printf("Theresultis:\n");for(k=0;k<m;k++)printf("%4d",a[k]);printf("\n");}【参考答案】⑴a2=k/10;(2)returni;.下列给定程序中函数fun的功能是:将字符串中的字符逆序输出,但不改变字符串中的内容。例如,若字符串为abed,则应输出:deba.请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>/*********** nd************/voidfun(chara){if(*a){fun(a+l);printf("%c"*a);}}main(){chars[10]="abcd";printf("处理前字符串=%s\n处理后字符串=",s);fun(s);printf("\n");}【参考答案】(l)voidfun(char*a)(2)printf("%c",*a);.下列给定程序中函数fun的功能是:将一个由,曲制数字字符组成的字符串转换成与其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。例如,若输入77777,则输出32767。请改正程序中的错误,使它能得出正确结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构.#include<stdio.h>intfun(char*p){intn;/**********found**********IP++;while(*p!=0){/**********found**********In=n*8+*P-'o';P++;}returnn;}main(){chars[6];inti;intn;printf("Enterastring(Ocataldigits):");gets(s);if(strlen(s)>5){printf("Error:Stringtoolonger!\n\n");exit(0);}for(i=0;s[i];i++)if(s[i]<'0'||s[i]>7'){printf("Error:%cnotisocataldigits!\n\n",s[i]);exit(O);}printf("Theoriginalstring:");puts(s);n=fun(s);printf("\n%sisconvenedtointegernumber:%d\n\n",s,n);}【参考答案】(2)n=n*8+*p-'O';.下列给定程序中函数fun的功能是:将长整型数中各位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数:8642.请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>voidfun(longs,long*t){intd;longsl=l;*t=0;while(s>0){d=s%10;/*********** nd************Iif(d%2=0){*t=d*sl+*t;si*=10;s\=10;main(){longs,t;printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);【参考答案】(l)if(d%2==0)(2)s/=10;18.下列给定程序中函数fun的功能是:计算并输出high以内最大的10个素数的和。high的值由主函数传给fun函数。例如,若high的值为100,则函数的值为732。请改正程序中的错误,使程序能输出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!#indude<stdio.h>#include<math.h>intfun(inthigh){intsum=0,n=0,j,yes;/************found************/while((high>=2)&&(n<10){yes=1;for(j=2;j<=high/2;j++)if(high%j==0){/*********** nd************Iyes=0;breakif(yes){sum+=high;n++;}high-;returnsum;}main()

printf("%d\n",fun(100));【参考答案】(l)while((high>=2)&&(n<10))(2)yes=0;break;.下列给定程序中函数fun的功能是:删除s所指字符中所有的小写字母c。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#include<stdio.h>voidfun(char*s){inti,j;for(i=j=0;s[i]!='\0';i++)/*********** nd************//*********** nd************Is[i]=0;main(){chars[80];printf("Enterastring:")printf("Enterastring:");gets(s);printf("Theoriginalstring:");puts(s);fun(s);printf("Thestringafterdeleted:");puts(s);printf("\n\n");【参考答案】(l)s[j++]=s[i];或{s[j]=s[i];j++;}(2)s[j]='\0';.下列下列给定程序中,函数fun的功能是:从低位开始依次取出长整型变量s中奇数位上的数,构成一个新数存放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为7654321时,t中的数为7531.请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>/************found************/voidfun(longs,longt){longsl=10;*t=s%10;while(s>0){s=s/100;*t=s%10*si+*t;si=sl*100;}}main(){longs,t;printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}【参考答案】(l)voidfun(longs,long*t)(2)sl=sl*10;.下列给定程序中函数fun的功能是计算S=f(-n)+f(-n+1)+...+f(O)+f(l)+f(2)+…+f(n)的值。例如,当n的值为5时,函数值应为10.407143.f(x)函数定义如下:f(x)=(x+l)/(x-2)x>0且XW2f(x)0 x=0或x=2(x-l)/(x-2) x<0请改正程序中的错误,使程序能输出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<math.h>/*************found**************/f(doublex){if(x==0.0||x==2.0)return0.0;elseif(x<0.0)return(x-l)/(x-2);elsereturn(x+l)/(x-2);}doublefun(intn)inti;doubles=0.0,y;for(i=-n;i<=n;i++){y=f(1.0*i);s+=y;}/*************found***:returns}voidmain(){system("CI_S");printf("%f\n",fun(5));}【参考答案】(l)doublef(doublex)(2)returns;.下列给定程序中函数fun的功能是:求三个数的最小公倍数。例如,若给主函数中的变量xLx2、x3分别输入15112,则输出结果应当是330。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#include<stdio.h>fun(intx,y,z){intj,t,n,m;j=1;t=j%x;m=j%y;n=j%z;while(t!=0||m!=0||n!=0){j=j+1;t=j%x;m=j%y;n=j%z;)/************found************/returni;}main(){intxl,x2,x3,j;printf("Inputxlx2x3:");scanf("%d%d%d",&xl,&x2,&x3);printf("xl=%d,x2=%d,x3=%d\n",xl,x2,x3);j=fun(xl,x2,x3);printf("Theminimalcommonmultipleis:%d\n",j);}【参考答案】(l)fun(intx,inty,intz)或intfun(intx,inty,intz)(2)returnj;.下列给定程序中函数fun的功能是:将s所指字符串中出现的与tl所指字符串相同的子串全部替换为t2所指字符串,所形成的新串放在w所指的数组中。要求tl和t2所指字符串的长度相同。例如,当s所指字符串中的内容为"abcdabfab",tl所指子串中的内容为"ab",t2所指子串中的内容为"99"时,在w所指的数组中的内容应为"99cd99f99".请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>#include<string.h>voidfun(char*s,char*tl,char*t2,char*w)char*p,*r,*a;strcpy(w,s);while(*w){p=w;/*********** nd************Iwhile(r)if(*r==*p){r++;p++;}elsebreak;if(*r=='\O')a=w;r=t2;while(*r){/************found************/*a=*r;a++;r++w+=strlen(t2);elsew++;main(){chars[100],tl[100],t2[100],w[100];printf("\nPleaseenterstringS:");scanf("%s",s);printf("\nPleaseentersubstringtl:");scanf("%s",tl);printf("\nPleaseentersubstringt2:");scanf("%s",t2);if(strlen(tl)==strien(t2)){fun(s,tl,t2,w);printf("\nTheresultis:%s\n",w);}elseprintf("Error:strlen(tl)!=strlen(t2)\n");}【参考答案】(l)while(*r){*a=*r;a++;r++;}.下列给定程序中函数fun的功能是:从N个字符串中找出最长的串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改的程序的结构!#include<stdio.h>#include<string.h>#define N 5#define M 81/**********found**********I{inti;char*sp;sp=sq[0];for(i=0;i<N;i++)if(strlen(sp)<strlen(sq[i]))sp=sq[i];/**********found**********/returnsq;}main(){charstr[N][M],*longest;inti;printf("Enter%dlines:\n",N);for(i=0;i<N;i++)gets(str[i]);printf("\nTheNstring:\n",N);for(i=0;i<N;i++)puts(str[i]);longest=fun(str);printf("\nThelongeststring:\n");puts(longest);}【参考答案】(l)char*fun(char(*sq)[M])(2)returnsp;.由N个有序整数组成的数列已放在一维数组中,下列给定程序中函数fun的功能是:利用折半查找法查找整数m在数组中的位置。若找至!1,返回其下标值;否则,返回-1.折半查找的基本算法是:每次查找前先确定数组中待查的范围low和high(low<high),然后用m与中间位置(mid)上元素的值进行比较。如果m的值大于中间位置元素的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。#include<stdio.h>#defineN10/*********** nd************Ivoidfun(inta[],intm){intlow=0,high=N-l,mid;while(low<=high){mid=(low+high)/2;if(m<a[mid])high=mid-l;/************f^^und************/elseIf(m>a[mid])low=mid+l;elsereturn(mid);)return(-l);}main(){inti,a[N]={-3,4,7,9,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");}【参考答案】(l)intfun(inta[],intm)或fun(inta[],intm)(2)elseif(m>a[mid]).下列给定程序中函数fun的功能是:从低位开始依次取出长整型变量s中偶数位上的数,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为7654321时,t中的数为6420请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#include<stdio.h>/************found************Ivoidfun(longs,longt){longsl=10;s/=10;*t=s%10;/************f^^und************Iwhile(s<0){s=s/100;*t=s%10*sl+*t;si=si*10;main(){longs,t;printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}【参考答案】(l)voidfun(longs,long*t)(2)while(s>0).下列给定程序中函数fun的功能是:用递归算法求形参a的平方根。求平方根的迭代公式如下:例如,a为2时,平方根值为:1.414214.请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1,C中,不得增行或删行,也不得更改的程序的结构!第29页第29页#include<stdio.h>#include<math.h>/**********found**********Ifun(doublea,dounlexO){doublexl,y;xl=(xO+a/x0)/2.0;/**********found**********Iif(fabs(xl-x0)<0.00001)y=fun(a,xl);elsey=xl;returny;}main(){doublex;printf("Enterx:");scanf("%lf',&x);printf("Thesquarerootof%lfis%lf\n",x,fun(x,1.0));}【参考答案】(l)doublefun(doublea,doublexO)(2)if(fabs(xl-x0)>=0.00001).下列给定程序中函数fun的功能是:用选择法对数组中的n个元素进行升序排列。请修改程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1,C中,不得增行和删行,也不得更改程序的结构!#include<stdio.h>#defineN20voidfun(inta[],intn){inti,j,t,p;for0=0;j<n-1;j++){/************f^^und************/p=jfor(i=j;i<n;i++)if(a[i]<a[p])/***********nd************/p=j;t=a[p];a[p]=a[j];a[j]=t;}}main(){inta[N]={9,6,8,3,-1),i,m=5;printf("排序前的数据:");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");fun(a,m);printf("排序后的数据:");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");}【参考答案】(l)P=j;(2)P=i;.下列给定程序中函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不相等,z和y的值不相等.例如,当x的值为9,y的值为11,z的值为15时,函数值为-3.50。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构。#include<stdio.h>#include<math.h>#include<stdlib.h>/*********** nd************/#defineFU(m,n)((m/n))floatfun(floata,floatb,floatc){floatvalue;value=FU(a+b,a-b)+FU(c+b,c-b);/************found************/Return(Value);}main(){floatx,y,z,sum;printf("Inputxyz:");scanf("%f%f%f',&x,&y,&z);printf("x=%f,y=%f,z=%f\n",x,y,z);if(x==y||y==z)<printf("Dataerror!\n");exit(0);)sum=fun(x,y,z);printf("Theresultis:%5.2f\n",sum);}【参考答案】(l)#defineFU(m,n)(m)/(n)(2)return(value);.下列给定程序中函数fun的功能是:用插入排序法对字符串中的字符进行升序排列。插入法的基本算法是:先对头两个字符进行排序,然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中 待排序的字符串已在主函数中赋予。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#include<stdio.h>#include<string.h>#defineN80voidinsert(char*aa){inti,j,n;charch;/**********found**********In=strlen[aa];for(i=l;i<n;i++){/**********found**********Ic=aa[i];j=i-l;while((j>=0)&&(ch<aa|j])){aa[i+l]=aa[j];j";}aa[j+l]=ch;}}main(){chara[N]="QWERTYUIOPASDFGHJKLMNBVCXZ";printf("Theoriginalstring: %s\n",a);insert(a);printf("Thestringaftersorting:%s\n\n",a);}【参考答案】(l)n=strlen(aa);(2)ch=aa[i];.下列给定程序中函数fun的功能是:判断一个整数是否为素数,若是素数返回1,否则返回O0在main。函数中,若fun返回1输出YES,若fun返回0输出NO!.请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#include<stdlib.h>#include<conio.h>#include<stdio.h>intfun(intm){intk=2;k++if(m=k)return1;elsereturn0;}voidmain(){intn;system("CLS");printf("\nPleaseentern:");scanf("%d",&n);if(fun(n))printf("YES\n");elseprintf("NO!\n");}【参考答案】⑴正确:k++;

(2)正确:if(m==k).下列给定程序中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成的新串放在t所指的数组中。例如,当S所指字符串为:"ABCD"时,t所指字符串中的内容应为:"ABCDDCBA"。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改的程序的结构!#include<stdio.h>#include<string.h>/*********** nd************Ivoidfun(chars,voidfun(chars,chart)inti,d;d=strlen(s);for(i=for(i=0;i<d;i++)t[i]=s[i];for(i=0;i<d;i++)/************found************Imain(){chars[100],t[100];printf("\nPleaseenterstringS:");scanf("%s",s);fun⑸t);printf("\nTheresultis:%s\n",t);}【参考答案】(l)voidfun(char*s,char*t)(2)t[2*d]='\0';或t[d+i]='\O';或t[2*d]=0;或t[d+i]=O;.下列给定程序中函数fun的功能是:根据整型形参m,计算如下公式的值。例如,若m的值为5,则应输出1.463611.请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1,C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>doublefun(intm){doubley=1.0;inti;/**************found**************Ifor(i=2;i<m;i++)/***********nd**************Iy+=I/(i*i);return(y);main(){intn=5;printf("\nTheresultis%lf\n",fun(n));}【参考答案】(l)for(i=2;i<=m;i++)(2)y+=1.0/(i*i);或y+=(double)L0/(i*i).下列给定程序中屈数fun的功能是:将字符串s中位于奇数位置的字符或ASCII码值为偶数的字符依次放入字符串t中。例如,字符串中的数据为"AABBCCDDEEFF",则输出应当是"ABBCDDEFF"。请改正函数fun中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构。#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>#defineN80voidfun(char*s,chart[])inti,j=0;for(i=0;i<(int)strlen(s);i++)/*************found**************/if(i%2&&s[i]%2==0)tU++]=s[i];/************ nd**************It[i]='\0';}voidmain(){chars[N],t[N];system("CLS");printf("\nPleaseenterstringsgets(s);fun⑸t);printf("\nTheresultis:%s\n",t);【参考答案】(l)if(i%2||s[i]%2==0)或if(i%2!=0||s[i]%2==0)(2)t[j]='\0';或t[j]=0;.假定整数数列中的数不重复,并存放在数组中。下列给定程序中函数fun的功能是:删除数列中值为x的元素。变量n中存放数列中元素的个数。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1,C中,不得增行或删行,也不得更改的程序的结构!#include<stdio.h>#defineN20intfun(int*a,intn,intx){intp=0,i;a[n]=x;while(x!=a[p])P=P+1;/**********fund**********Iif(P==n)return-1;else{for(i=p;i<n-l;i++)/**********fund**********Ia[i+l]=a[i];returnn-1;}}main(){intw[N]={-3,0,l,5,7,99,10,15,30,90}/x,n,i;n=10;printf("Theoriginaldata:\n");for(i=0;i<n;i++)printf("%5d",w[i]);printf("\nlnputx(todelete):");scanf("%d",&x);printf("Delete:%d\n",x);n=fun(w,n,x);if(n==-l)printf("***Notbefound!***\n\n");else{printf("Thedataafterdeleted:\n");for(i=0;i<n;i++)printf("%5d",w[i]);printf("\n\n");)}【参考答案】(l)if(p==n)return-1;(2)a[i]=a[i+l];.下列给定程序中,函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。请改正函数fun中的错误或在下画线处填上适当的内容并把下画线删除,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构。#include<stdlib.h>#include<conio.h>#include<string.h>#include<stdio.h>#defineN80intfun(char*s,char*t){intn;char*p,*r;n=0;P=&s[O];/*************^qupij**************I*r=t;while(*p)jf(*r==*p)r++;jf(*r=='\O')n++;/*************fund**************I)}P++;}returnn;}voidmain(){chara[N],b[N];intm;system("CLS");printf("\nPleaseenterstringa:");gets(a);printfC'XnPleaseentersubstringb:");gets(b);m=fun(a,b);m=printf("\nTheresultis:m=%d\n",m);第40页第40页【参考答案】⑴r=t;(2)应填:r=t;或r=&t[0];.下列给定程序中函数fun的功能是:用下面的公式求n的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。例如,程序运行后,输入0.0001,则程序输出3.1414。请改正程序中的错误,使它能输出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!#include<math.h>#include<stdio.h>floatfun(floatnum){ints;floatn,t,pi;t=l;pi=0;n=l;s=1;/**************found**************Iwhile(t>=num)/************* nd**************Ipi=pi*4;returnpi;main(){floatnl,n2;printf("Enterafloatnumber:");scanf("%f,&nl);n2=fun(nl);printf("%6.4f\n",n2);}【参考答案】(l)while(fabs(t)>=num)(2)t=s/n;.下列给定程序中,函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(如Z转化为转化为官),其他字符不变。请改正函数fun中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构。#include<stdlib.h>#include<stdio.h>#include<ctype.h>#include<conio.h>voidfun(char*s)/*************found**************/{while(*s!={if(*s>='A'&&*s<='Z'11*s>='a'&&*s<='z'){if(*s=='Z')*s='A';elseif(*s=='z')*s='a';else*s+=l;}/************nd**************/(*s)++;)}voidmain(){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);}【参考答案】⑴while(*s)或while(*s!='\O')(2)s++;.下列给定程序中,函数fun的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。请改正函数fun中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。#indude<stdlib.h>#include<stdio.h>#include<conio.h>voidfun(char*s){inti,j;for(i=0,j=0;s[i]!='\0';i++)if(s[i]>='0'&&s[i]<='9')/************nd**************/sU]=s[i];/*************f^)und**************/s[j]="\O";}voidmain(){charitem[80];system("CLS");printf("\nEnterastring:");gets(item);printf("\n\nThestringis:%s\n",item);fun(item);printf("\n\nThestringofchangingis:%s\n",item);}【参考答案】(l)s[j++]=s[i];⑵s[j]=,\(y;.在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中函数fun的功能是:计算数组元素中所有值为正数的平均值(不包括0)。例如:数组中元素中的值依次为:39,-47,21,2,-8,15,0,则程序的运行结果为19.250000.请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>doublefun(intx[])/************f^^und************/intsum=0.0;intc=0,i=0;while(x[i]!=0)sum+=x[i];C++;}i++;/*********** nd************Isum\=c;returnsum;main(){intx[1000];inti=0;printf("\nPleaseentersomedata(endwith0):");do{scanf("%d",&x[i]);}while(x[i++]!=0);printf("%f\n",fun(x));}【参考答案】(l)doublesum=0.0;(2)sum/=c;.下列给定程序中函数fun的功能是:将s所指字符串中最后一次出现的与tl所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。要求tl和t2所指字符串的长度相同。例如,当s所指字符串中的内容为:"abcdabfabc",tl所指串中的内容为"ab",t2所指子串中的内容为"99"时,结果在w所指的数组中的内容应为"abcdabf99c"。请改正程序中的错误,使它能得出正确的结果。注意:部分;麻呈序在文件M0DI1.C中,不得增行或删行,也不得更改的程序的结构!#include<stdio.h>#include<string.h>voidfun(char*s,char*tl,char*t2,char*w)char*p,*r,*a=s;strcpy(w,s);while(w)p=w;r=tl;while(*r)IF(*r==*p){r++;p++;}elsebreak;if(*r=='\0')a=w;w++;r=t2;while(*r)<*a=*r;a++;r++;}main()chars[100],tl[100],t2[100],w[100];printf("\nPleaseenterstringS:");scanf("%s",s);printf("\nPleaseentersubstringtl:");scanf("%s",tl);printf("\nPleaseentersubstringt2:");scanf("%s",t2);if(strlen(tl)==strlen(t2)){fun(s,tl,t2,w);printf("\nTheresultis:%s\n",w);}elseprintf("\nError:strlen(tl)!=strlen(t2)\n");}【参考答案】(l)while(*w)⑵if(*r==*p).下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m410)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。#include<stdlib.h>#include<conio.h>#include<string.h>#include<stdio.h>#include<malloc.h>#defineN10typedefstructss{charnum[10];ints;)STU;STU*fun(STUa[],intm)inti,j,k;/************ nd**************I*t=calloc(m,sizeof(STU));for(i=0;i<N;i++)b[i]=a[i];for(k=0;k<m;k++){for(i=j=O;i<N;i++)/************ nd**************It[k].num=b[j].num;t[k].s=b[j].s;b[j].s=0;returnt;}outresult(STUa[],FILE*pf){inti;for(i=0;i<N;i++)fprintf(pf,"No=%sMark=%d\n",a[i].num,a[i].s);fprintf(pf,"\n\n");}voidmain(){STUa[N]={{"AOI"A02",89},{"A03",66},{"A04",87},{"A05",77}z{"A06",90},{"A07",79},{"A08 "A09",80},{"A10",71}};STU*pOrder;inti,m;system("CLS");printf("*****THERESULT*****\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<m;i++)printf("%s%d\n",pOrder[i].num,pOrder[i].s);free(pOrder);}【参考答案】(l)t=calloc(m,sizeof(STU));⑵t[k]=b[j];.下列给定程序中函数fun和funx的功能是:用二分法求方程的一个根,并要求绝对误差不超过0.001.例如,若给m输入-100,n输入90,则函数求得的一个根为2.000。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1,C中,不得增行或删行,也不得更改程序的结构.#include<stdio.h>#include<math.h>doublefunx(doublex){return(2*x*x*x-4*x*x+3*x-6);}第49页第49页doublefun(doublem,doublen)/*********** nd************/intr;r=(m+n)/2;/************found************/while(fabs(n-m)<0.001){if(funx(r)*funx(n)<0)m=r;elsen=r;r=(m+n)/2;returnr;main(){doublem,n,root;printf("Entermn:\n");scanf("%lf%lf',&m,&n);root=fun(m,n);printf("root=%6.3f\n",root);【参考答案】(l)doubler;(2)while(fabs(n-m)>0.001).下列给定程序中函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串之后。例如:当S所指的字符串为"ABCDE"时,t所指的字符串应为"EDCBAABCDE"。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1,C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>#include<string.h>voidfun(char*s,char*t)/*********** nd************Iintsi=strlen(s);for(i=0;i<sl;i++)/*********** nd************Ifor(i=0;i<=sl;i++)main(){chars[100],t[100];printf("\nPleaseenterstrings:");scanf("%s",s);fun(s,t);printf("Theresultis:%s\n",t);【参考答案】(l)int\,si;.下列给定程序中函数fun的功能是:根据以下公式求it值,并作为函数值返回。例如,当给指定精度的变量eps输入0.0005时,应输出Pi=3.140578。n/2=1+1/3+1/3x2/5+1/3x2/5x3/7+1/3x2/5x3/7x4/9+……请改正程序中的错误,使它能得出正确的结果。第51页第51页注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改的程序的结构!#include<math.h>#include<stdio.h>doublefun(doubleeps){doubles,t;intn=l;s=0.0;/*********** nd************It=0;while(t>eps){s+=t;t=t*n/(2*n+l);n++;/************found************/return(s);main(){doublex;printf("\nPleaseenteraprecision:");scanf("%lf',&x);printf("\neps=%lf,Pi=%lf\n\n",x,fun(x));【参考答案】⑴t=L0;(2)return(s*2);.下列给定程序中fun函数功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件M0DI1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>#include<stdlib.h>fun(intn,int*a){inti,j,p,t;for(j=0;j<n-l;j++)P=J;/************fund************Ifor(i=j+l;i<n-l;i++)if(a[p]>a[i])t=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

温馨提示

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

评论

0/150

提交评论