1、二级C上机模拟题上机模拟题模拟练习一1.填空题s为一个字符序列,请补充fun函数,该函数的功能是:查找s中值为a的元素,返回找到值为a的元素个数,并把这些值为a的元素下标依次保存在数组str中。例如,在testtest中查找e,结果为2,下标依次为1、5。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include # include # define M 100int strM;int fun(char *s,char ch) int i=0,n=0; char t=ch; char *p=s; while(*p
2、) if(_1_) _2_; p+; i+; return _3_;main() char sM; char ch; int i,n; printf(Please Input the original stringn ); gets(s); printf(The Original string is :n); puts(s); printf(Input charactern); scanf(%c,&ch); n=fun(s,ch); printf( nThe number of character is: %dn,n); printf(The position of character:n);
3、 for(i=0;in;i+) printf( %d ,stri);2.改错题下列给定程序中,函数fun的功能是:用递归算法计算斐波拉契级数数列中第n项的值。从第1项起,斐波拉契级数序列为1、1、2、3、5、8、例如,若给n输入7,则该项的斐波拉契级数值为13。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include long fun(int m) /*error*/ switch(m); case 0: return 0; /*error*/ case 1; case 2: return 1; return (fun(m-1)+
4、fun(m-2);main() long a; int n; printf(Input n: ); scanf(%d,&n); printf(n=%dn,n); a=fun(n); printf(a=%dnn,a);3.编程题请编写函数fun,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,若一维数组中的数据是:1,1,1,2,2,3,3,3,3,4删除后,数组中的内容应该是:1,2,3,4请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# i
5、nclude # define M 100int fun(int b,int m) main() int bM=1,1,1,2,2,3,3,3,3,4,i,m=10; FILE *out ; printf(The original data :n); for(i=0;im;i+) printf(%3d,bi); m=fun(b,m); printf(nThe data after deleted :n); out=fopen (outfile.dat,w); for(i=0;im;i+) printf(%3d,bi); fprintf(out,%dn,bi); fclose (out);模拟练
6、习二1.填空题给定程序中,函数fun的功能:将s所指字符串中的所有非数字字符移到所有数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:asf34fgrt5657gngjh78。则执行结果为:34565778asffgrtgngjh。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include void fun(char *str) int i,j=0,k=0; char temp180,temp280; for(i=0;stri!=0;i+) if(stri=a & stri=
7、z) _1_; j+; else temp1k+=stri; temp2j=0; temp1k=0; for(i=0;ik;i+) _2_; for(i=0;i_3_;i+) strk+i=temp2i;main() char str100=asf34fgrt5657gngjh78; printf(nThe original string is : %sn,str); fun(str); printf(nThe result is : %sn,str);2. 改错题下列给定程序中,函数fun的功能是:计算并输出max以内最大的10个素数之和。high由主函数传给fun函数。若max的值为50,
8、则函数的值为300。请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include # include # include int fun(int max) int sum=0,n=0,j,flag; while(max=2) & (n10) flag=1; for(j=2;j=max/2;j+) /*error*/ if(max%j=0) flag=0; break if(flag) sum+=max; n+; max-; return sum;main() printf(%dn,fun(50);3.编程题请编写函数fun,该
9、函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。例如,若字符串数组中的M个字符串是:11112222222334444则合并后的字符串的内容应是11112222222334444。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # define M 4# define N 20void fun(char strMN,char *a) main() char matrixMN=1111,2222222,33,4444,i; char str 100=*; F
10、ILE *out ; printf(The string:n); for(i=0;iM;i+) puts(matrixi); printf(n); fun(matrix,str); printf(The string:n); printf(%s,str); printf(nn); out=fopen (outfile.dat,w); fprintf(out,%s,str); fclose (out);模拟练习三1.填空题在给定程序中,函数fun的功能是:在形参s所指字符串中的每个非数字字符之后插入一个*号。例如,形参s所指的字符串为:a1bc45sdtg56f,则执行结果为a*1b*c*45s
11、*d*t*g*56f*。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include void fun(char *str) int i,j,n; for(i=0;stri!=0;i+) if(stri=a_1_ strii;j-) strj+1=_3_; strj+1=*; i=i+1; main() char str100=a1bc45sdtg56f; printf(nThe original string is : %sn,str); fun(str); printf(nThe result is : %sn
12、,str);2.改错题下列给定程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母,若小写字母为vz,使小写字母的值减21,转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。请修改函数fun中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include # include char fun(char ch) /*error*/ if(ch=A & ch=a & ch=v & ch=z) ch=ch-21; return ch;main() char ch1,ch2;
13、printf(nEnter a letter(A-Z): ); ch1=getchar(); if(isupper(ch1) ch2=fun(ch1); printf(nnThe letter %c change to %cn,ch1,ch2); else printf(nEnter (A-Z)!n); 3.编程题编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把str2所指的字符串连接到str1所指的字符串后。例如,分别输入下面两个字符串:just-test则程序输出:just-test请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中
14、填入所编写的若干语句。注意:部分源程序给出如下。# include # include void fun(char str1,char str2) main() char s1100,s250 ; FILE *out; printf(Enter s1 and s2:n) ; scanf(%s%s,s1,s2) ; printf(s1=%sn,s1) ; printf(s2=%sn,s2) ; fun(s1,s2) ; printf(After invoking:n) ; printf(%sn,s1) ; out=fopen(outfile.dat,w); strcpy(s1,Hello );
15、fun(s1,World!); fprintf(out,%sn,s1) ; strcpy(s1,This ); fun(s1,is ); fun(s1,a ); fun(s1,test ); fun(s1,string.); fprintf(out,%sn,s1) ; fclose(out);模拟联系四1.填空题函数fun的功能:逆置数组元素中的值,形参m给出数组中数据的个数。例如,若x所指数组中的数据依次为9、8、7、6、5,则逆置后依次为5、6、7、8、9。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# incl
16、ude void fun(int a,int m) int i,temp; for(i=0;i_1_;i+) temp=ai; ai=am-1-_2_; _3_=temp; main() int x9=9,8,7,6,5,i; printf(nThe original data :n); for(i=0;i5;i+) printf(%4d ,xi); printf(n); fun(x,5); printf(nThe data after invert :n); for(i=0;i5;i+) printf(%4d ,xi); printf(n);2.改错题下列给定程序中,函数fun的功能是根据输
17、入的三个边长(整型值),判断能否构成三角形;构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数,返回3;若能构成等腰三角形函数,返回2;若能构成三角形函数,返回1;若不能构成三角形函数,返回0。请修改函数fun中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include int fun(int x,int y,int z) if(x+yz & y+zx & x+zy) /*error*/ if(x=y & y=z) return 1; else if(x=y | y=z | x=z) return 2; else /*error*/ r
18、eturn 3; else return 0;main() int x,y,z,shape; printf(nInput x,y,z: ); scanf(%d%d%d,&x,&y,&z); printf(nx=%d,y=%d,z=%dn,x,y,z); shape=fun(x,y,z); printf(nnThe shape : %dn,shape);3.编程题假定输入的字符串中只包含字母和#号,请编写函数fun,它的功能是:删除字符串中所有的#号。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为#w#el#come#,删除后,字符串中的内容则应当是welcome。请勿改
19、动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # include void fun(char *s) main() char str81; FILE *out ; printf(Enter a string:n); gets(str); fun(str); printf(The string after deleted:n); puts(str); out=fopen(outfile.dat,w); strcpy(str,#T#ES#T#); fun(str); fprintf(out,%s,str); fc
20、lose(out);模拟练习五1.填空题请补充fun函数,该函数的功能是求能整除k且是偶数的数,把这些数保存在数组a中,并按从大到小输出。例如,当k=40时,依次输出40 20 10 8 4 2。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include # include void fun(int k,int a) int i; int j=0; for(_1_;i=0;i-) printf(%d ,ai);main() int k=1; int a100; printf(nPlease input kn);
21、scanf(%d,&k); fun(k,a);2.改错题下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的单词是指由空格隔开的字符串)。例如,若输入good luck!,则应输出Good Luck!。请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include # include # include /*error*/void top(char s) int i=0; for(;*s;s+) if(i) if(*s= ) i=0; else if(*s!= ) i=1; *s
22、=toupper(*s); main() char str81; printf(nPlease enter an English text line: ); gets(str); printf(nnBefore changing:n %s,str); top(str); printf(nAfter changing:n %sn,str);3.编程题假定输入的字符串中只包含字母和#号。请编写函数fun,它的功能是:除了字符串前导和尾部的#号之外,将串中其他#号全部删除。形参r已指向字符串中第一个字母,形参v已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中
23、的内容为#a#bc#def#g#,删除后,字符串中的内容则应当是#abcdefg#。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # include # include void fun(char *s,char *r,char *v) main() char str100,*p,*q; FILE *out; printf(Enter a string:n); gets(str); p=q=str; while(*p) p+; p-; while(*p=#) p-; while(*q=#) q+; fun(str,q,p); printf(The string after deleted:n); puts(str); out=fopen (outfile.dat,w); strcpy(str,#a#b#c#d#); fun(str,str+4,str+13); fprintf(out,%s,str); fclose (out);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1