《计算机二级c机试题.doc》由会员分享,可在线阅读,更多相关《计算机二级c机试题.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机二级c机试题给定程序中,函数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 & str
2、i=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);【答案】(1)temp2j=stri(2)stri=temp1i(3)j下列给定程序中,函数fun的功能是:计算并输出max以内最大的10
3、个素数之和。high由主函数传给fun函数。若max的值为50,则函数的值为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() pr
4、intf(%dn,fun(50);【答案】break;请编写函数fun,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。例如,若字符串数组中的M个字符串是:1111334444则合并后的字符串的内容应是11112222222334444。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # define M 4# define N 20void fun(char strMN,char *a) main() char matrixMN=1111,222222
5、2,33,4444,i; char str 100=*; FILE *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 (out,w); fprintf(out,%s,str); fclose (out);【答案】int i,j,k=0;for(i=0;iM;i+) for(j=0;jN;j+) if(*(*(str+i)+j) /如果不指向行的尾 ak=
6、*(*(str+i)+j); /将行中的值赋值给数组a k+; /数组下标加1 else /如果指向尾,则跳出这一行 break; ak=0; /数组加尾符 在给定程序中,函数fun的功能是:在形参s所指字符串中的每个非数字字符之后插入一个*号。例如,形参s所指的字符串为:a1bc45sdtg56f,则执行结果为a*1b*c*45s*d*t*g*56f*。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include void fun(char *str) int i,j,n; for(i=0;stri!=0;i+)
7、 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,str);【答案】(1)&(2)0(3)strj下列给定程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母,若小写字母为vz,使小写字母的值减21,转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f;若形参是字母W,则转
8、换为小写字母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; printf(nEnter a letter(A-Z): ); ch1=getchar(); if(isupper(ch1) ch2=fun(ch1); printf(nnThe letter %c change to %cn,ch1,c
9、h2); else printf(nEnter (A-Z)!n); 【答案】(1)ch=ch+32;(2)ch=ch+5;编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把str2所指的字符串连接到str1所指的字符串后。例如,分别输入下面两个字符串:just-test则程序输出:just-test请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # include void fun(char str1,char str2) main() char s1100,s250
10、; 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(out,w); strcpy(s1,Hello ); fun(s1,World!); fprintf(out,%sn,s1) ; strcpy(s1,This ); fun(s1,is ); fun(s1,a ); fun(s1,test ); fun(s1,st
11、ring.); fprintf(out,%sn,s1) ; fclose(out);【答案】int i=0,n=0; /初始化串1个数n,下标ichar *p=str1,*q=str2; /定义指针p,q指向串1、串2while(*p) /循环求第一个串中字符个数 p+; /指向下一个字符 n+; /字符个数加1 i=n; /i赋值为串1的最后位置while(*q) /循环中将串2放在串1后面 str1i=*q; /将q指向的字符依次放在串str1后面 q+; /指向下一个字符 i+; /下标加1 str1i=0; /在新串后加尾符函数fun的功能:逆置数组元素中的值,形参m给出数组中数据的个
12、数。例如,若x所指数组中的数据依次为9、8、7、6、5,则逆置后依次为5、6、7、8、9。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include 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);
13、fun(x,5); printf(nThe data after invert :n); for(i=0;i5;i+) printf(%4d ,xi); printf(n);【答案】(1)m/2(2)I(3)am-i-1下列给定程序中,函数fun的功能是根据输入的三个边长(整型值),判断能否构成三角形;构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数,返回3;若能构成等腰三角形函数,返回2;若能构成三角形函数,返回1;若不能构成三角形函数,返回0。请修改函数fun中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include int f
14、un(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*/ return 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,
15、shape);【答案】(1)return 3;(2)return 1;假定输入的字符串中只包含字母和#号,请编写函数fun,它的功能是:删除字符串中所有的#号。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为#w#el#come#,删除后,字符串中的内容则应当是welcome。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # include void fun(char *s) main() char str81; FILE *out ; printf(Enter a string:
16、n); gets(str); fun(str); printf(The string after deleted:n); puts(str); out=fopen(out,w); strcpy(str,#T#ES#T#); fun(str); fprintf(out,%s,str); fclose(out);【答案】int i=0;char *p=s;/工作指针p指向字符串swhile(*p) /当p不指向字符串尾符 if(*p!=#) /指针p指向的字符不是# si=*p;/将p指向的字符复制到字符串s i+; /s下标加1 p+; /指针指向下一个字符 si=0;/新串加尾符请补充fun函
17、数,该函数的功能是求能整除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); scanf(%d,&k); fun(k,a);【答案】
18、(1)i=1(2)&(3)-j下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的单词是指由空格隔开的字符串)。例如,若输入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=toupper(*s);
19、 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);【答案】void top(char *s)假定输入的字符串中只包含字母和#号。请编写函数fun,它的功能是:除了字符串前导和尾部的#号之外,将串中其他#号全部删除。形参r已指向字符串中第一个字母,形参v已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,若字
20、符串中的内容为#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+;
21、 fun(str,q,p); printf(The string after deleted:n); puts(str); out=fopen (out,w); strcpy(str,#a#b#c#d#); fun(str,str+4,str+13); fprintf(out,%s,str); fclose (out);【答案】int i=0;char *q=s;while(qr) si=*q; q+; i+; while(q2)的素数的个数,素数的个数作为函数值返回。例如,输入x=20,结果:2,3,5,7,11,13,17,19。请勿改动主函数main与其他函数中的任何内容,仅在fun函数
22、的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include int fun(int x) int i,j,count=0; printf(nThe prime number between 2 to %dn,x); for(i=2;i=x;i+) for(_1_;j=i) count+; printf(count%15 ? %5d : n%5d,i); return count;main() int x=20,result; result=fun(x); printf(nThe number of prime is : %dn,result);【答案】(1)j=2(2)i
23、(3)j下列给定程序中函数fun的功能是:计算m!。例如,给m输入3,则输出6.000000。请修改程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include # include double fun(int m) double result=1.0; /*error*/ if m=0 return 1.0; while(m1 & m170) /*error*/ result=m-; return result;main() int m; printf(Input m:); scanf(%d,&m); printf(nn%d!=%
24、1fnn,m,fun(m);【答案】(1)if(m=0)(2)result*=m-;学生的记录由学生和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数fun,它的功能是把分数最高的学生数据放在high所指的数组中.注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # define M 10typedef struct char num10; int s; SCORE;int fun(SCORE *p,SCORE *q) m
25、ain () SCORE stuM=02,69,04,85,01,91,08,64,06,87,015,85,013,91,012,64,011,91,017,64; SCORE highM; int i,n; FILE *out; n=fun(stu,high); printf(The %d high score :n,n); for(i=0;in;i+) printf(%s %4dn,highi.num,highi.s); printf(n); out=fopen (out,w); fprintf(out,%dn,n); for(i=0;in;i+) fprintf(out,%4dn,hi
26、ghi.s); fclose (out);【答案】int i,j=0,n=0,max;max=p0.s;for(i=0;imax)max=pi.s;for(i=0;iM;i+)if(pi.s=max)*(q+j)=pi;j+;n+;return n;程序的功能是计算,例如,输入参数3,结果为10。请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include long fun(int n) int i; long f; f=_1_; for(i=1;i=n;i+) f=_2_; return f;main() long s; i
27、nt k,n; printf(Please input the data:); scanf(%d,&n); s=_3_; for(k=0;k=n;k+) s=_4_; printf(the resutl is : %ldn,s);【答案】(1)1(2)f*i(3)0(4)s+fun(k)下列给定程序中函数fun的功能是:统计子字符串substr在字符串str中出现的次数。例如,若字符串为aaaskkaaas,子字符串为as,则应输出2。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include /*error*/int fun(ch
28、ar *s,*str) int i,j,k,num=0; /*error*/ for(i=0,si,i+) for(j=i,k=0;strk=sj;k+,j+) if(strk+1=0) num+; break; return num;main() char s100,str80; printf(Input a string:); gets(s); printf(Input a substring:); gets(str); printf(%dn,fun(s,str);【答案】(1)int fun(char *s,char *str)(2)for(i=0;si;i+)请编写函数fun,其功能是
29、:计算并输出当x0.97时下列多项式的值,直到|Fn-Fn-1|0.000001为止。例如,若主函数从键盘给x输入0.33后,则输出为f=1.153256。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # include double fun(double x) main() int i; double x,f; FILE *out; printf(Input x: ); scanf(%lf,&x); f=fun(x); printf(f=%fn,f); out=fopen (out,w); for(i
30、=20;i=1e-6);/循环条件return sum;请补充fun函数,该函数的功能是把从主函数中输入的字符串s2接在字符串s1后面。例如,输入s1=Hi,,s2=Welcome!,结果输出Hi,Welcome!。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include # include # define LEN 100void fun(char *s1,char *s2) int i=0; char *p1=s1; char *p2=s2; while(_1_) i+; for(;_2_;i+) *(p1
31、+i)=_3_; *(p1+i)=0;main() char s1LEN,s2LEN; printf(Please input the string s1 and s2n ); printf( ns1:); gets(s1); printf( ns2:); gets(s2); printf(The string s1 and s2n); puts(s1); puts(s2); fun(s1,s2); printf(The new string isn); puts(s1);【答案】(1)*(p1+i)(2)*p2(3)*p2+下列给定程序中函数fun的功能是:将长整型数中每一位上为偶数的数依次
32、取出,构成一个新数放在b中。高位仍在高位,低位仍在低位。例如,当a中的数为123456时,则b中的数为246。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include # include void fun(long a,long *b) /*error*/ int d; long s1=0; *b=0; while(a0) d=a%10; if(d%2=0) *b=d*s1+*b; s1*=10; /*error*/ a=10; main() long a,b; printf(nPlease enter data:); scanf
33、(%ld,&a); fun(a,&b); printf(The result is :%ldn,b);【答案】(1)long s1=1;(2)a/=10;请编写函数fun,其功能是:将str所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放入s所指的数组中。例如,若str所指字符串中的内容为,其中字符2的ASCII码值为偶数、字符4的ASCII码值为偶数.都应当删除,其他依次类推。最后s所指的数组中的内容应是1357。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # include #
34、 include void fun(char *str,char s)main() char str100,s100,m=nPlease enter string:; FILE *out; printf(m); scanf(%s,str); fun(str,s); printf(nThe result is :%sn,s); out=fopen (out,w); fun(m,s); fprintf(out,%s,s); fclose (out);【答案】int i,j=0,n=strlen(str);for(i=0;in;i+) if(stri%2!=0) sj=stri; j+; sj=0;函数fun的功能:将形参b所指数组中的前半部分元素的值和后半部分元素的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。例如,若a所指数组中的数据依次为11 22 33 1 44 55 66,则调换后为44 55 66 1 11 22 33。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include # define M 7v