国家二级C语言机试.pdf

上传人:文*** 文档编号:88034751 上传时间:2023-04-20 格式:PDF 页数:241 大小:17.65MB
返回 下载 相关 举报
国家二级C语言机试.pdf_第1页
第1页 / 共241页
国家二级C语言机试.pdf_第2页
第2页 / 共241页
点击查看更多>>
资源描述

《国家二级C语言机试.pdf》由会员分享,可在线阅读,更多相关《国家二级C语言机试.pdf(241页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第 01套:给定程序中,函数fun的功能是:在形参s 所指字符串中的每个数字字符之后插入一个*号。例如,形参s 所指的字符串为:def35adh3kjsdf7执行结果为:def3*5*adh3*kjsdf7*。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include void fun(char*s)int i,j,n;for(i=0;si!=0;i+)/*fo u n d*Iif(si=0 _1 sii;j)/*f o u n d*Isj+l=3Sj+1=*;i=

2、i+l;main()char s80=b a3a54cd23a;printf(unThe original string is:%sn,s);fun(s);printf(nThe result is:%sn,s);?解题思路:第一处:判断是数字,应该使用 与,所以应填:&。第二处:判断字符串是否是字符串结束符,所以应填:0。第三处:如果当前字符是数字字符,则把当前字符以后的所有字符往后一个位置,所以应填:sjo给定程序MODI1.C中函数fun的功能是:根据整型形参m,计算如卜公式的值。111 1y=1+-+-+-+-2*2 3*3 4*4 m*m例如,若 m 中的值为:5,则应输出:1.46

3、3611。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include doub le fun(int m)doub le y=1.0;int i;for(i=2;i m;i+)!5 K 1*f o|*|*1 1*/y+=1/(i*i);return(y);?main()int n=5;printf(nThe result is%lfn,fun(n);解题思路:第一处:使用for循环计算公式,必须计算到m,所以应改为for(i=2;i=m;i+)。第二处:在除法运算中,如果除数和被除数都是整数,所以所除结果也是整数,

4、因此应改为 y+=l./(i*i)请编写函数fu n,函数的功能是:实现B=A+A,即把矩阵A 加上A 的转置,存放在矩阵B 中。计算结果在m ain函数中输出。例如,输入下面的矩阵:其转置矩阵为:1 2 3 1 4 74 5 6 2 5 87 8 9 3 6 9程序输出:2 6 106 10 1410 14 18注意:部分源程序在文件PR0G1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include void fun(int a33,int b 33)main()/*主程序*/int a33=1,2,3,4,5,6,7,

5、8,9,t33;int i,j;fun(a,t);for(i=0;i 3;i+)for(j=0;j 3;j+)printf(%7d,tij);printf(n);NONO();?解题思路:本题考察考生如何实现矩阵的转置,然后执行两个矩阵中的元素值相加生成一个新的矩阵。矩阵转置实现上就是原行元素值变为列元素值,原列元素值变为行元素值。参考答案:void fun(int a33,int b 33)int c33;int i,j;for(i=0;i 3;i+)for(j=0;j 3;j+)cij=aji;/*矩阵的转置*/b ij=aiU+cij;?第 02套:给定程序中,函数fun的功能是:找 出

6、 100999之 间(含 100和 999)所有整数中各位上数字之和为x(x 为一正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。例如,当 x 值 为 5 时,100999之间各位上数字之和为5 的整数有:104、113、122、131、140、203、212、221、230、302、311、320、401、410、500 共有15个。当 x 值 为 27时,各位数字之和为27的整数是:999o只 有 1 个。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.CK不得增行或删行,也不得更改程序的结构!给定源程序:#i

7、nclude fun(int x)int nz si,s2,s3,t;n=0;t=100;/*fo und*!while(t=_1_)/*f u n d*Isl=t%10;s2=(_2_)%10;s3=t/100;/*f o und*!if(sl+s2+s3=_3_)printf(%d,t);n+;t+;return n;?main()int x=-l;while(x0):);scanf(%d,&x);printf(nThe result is:%dn,fun(x);?解题思路:第一处:使用while循环找出100999之间所有整数,所以应填:999。第二处:s 2是求十位数字,所以应填:t/

8、10。第三处:各位数字之和为X,所以应填:X。给定程序MODI1.C中函数fu n的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当 s 中的数为:7654321时,t 中的数为:642。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include I f/void fun(long s,long t)long sl=10;s/=10;*t=s%10;/*f o u n d*/while(s 0,所以应改为:while(s0)学生的记录由学号和成绩组成,N

9、 名学生的数据已在主函数中放入结构体数组s 中,请编写函数fu n,它的功能是:按分数的高低排列学生的记录,高分在前。注意:部分源程序在文件PR0G1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#define N 16typedef struct char num10;int s;STREC;int fun(STREC a)main()STREC SN=GA005,85,GA003,76/GA002,69,GA004,85,TAB TAB GA001,91,GA007,72,GA008,64,GA006,8

10、7,TAB TAB GA015,85,GA013,91,GA012,64,GA014,91,TAB TAB GA011,66,GA017,64,GA018,64,GA016,72);int i;FILE*out;fun(s);printf(The data after sorted:n);for(i=0;iN;i+)if(%4=0)printf(n);printf(%s%4d,si.num,si.s);printf(n);out=fopen(c:testout.dat,w);for(i=0;iN;i+)if(j)%4=0&i)fprintf(out,n);fprintf(out,%4d,si.

11、s);?fprintf(out,n);fclose(out);?解题思路:本题是按结构体中成绩s 进行降序排列,其结果仍存入当前结构体中。参考答案:#include#define N 16typedef struct char num10;int s;STREC;int fun(STREC a)STREC tmp;int i,j;for(i=0;i N;i+)for(j=i+1;j N;j+)if(ai.s aj.s)tmp=ai;ai=aj;aj=tmp;)第 03套:给定程序中,函数fun的功能是:找 出 100至 x(x999)之间各位上的数字之和 为 15的所有整数,然后输出:符合条件

12、的整数个数作为函数值返回。例如,当 n 值 为 500时,各位数字之和为15的整数有:159、168、177、186、195、249、258、267、276、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492。共有 26 个。请在程序的卜划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include fun(int x)int n,si,s2,s3,t;n=1t=100;/*f u n d*Iwhi

13、le(t999|x0)printf(Please input(0 x=999):);scanf(%d,&x);printf(nThe result is:%dn,fun(x);解题思路:第一处:符合条件的整数个数n,必须进行初始化,所以应填:0。第二处:找出X4999,所以应填:X。第三处:循环控制变量t 每循环一次t 要 加 1,所以应填:t+。给定程序M O D U.C中函数fu n的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。例如:当s所指的字符串为:ABCDE时,则t所指的字符串应为:EDCBAABCDE。请改正程序中的

14、错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#include void fun(char*s,char*t)/*f o u n d*int i;si=strlen(s);for(i=0;isl;i+)/*fo u n d*/ti=ssl-i;for(i=0;isl;i+)TAB tsl+i=si;t2*sl=0;main()char s100,t100;printf(nPlease enter string s:);scanf(%s,s);fun(s,t);printf(The result is:%sn,t);解

15、题思路:第一处:变量si没有定义。第二处:在C语言中,字符串开始位置从0开始的,所以应改为:ti=ssl-i-l;o函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。例如,当a=45,b=12。调用该函数后,c=1425o注意:部分源程序存在文件PR0G1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include void fun(int a,int

16、b,long*c)main()/*主函数*/int a,b;long c;printf(Input a,b:);scanf(%d%d,&a,&b);fun(a,b,&c);printf(The result is:%ldn,c);NONO();解题思路:本题是给出两个两位数的正整数分别取出各位上的数字,再按条件组成一个新数。取 a 十位数字的方法:a/10取 a 个位数字的方法:a%10参考答案:void fun(int a,int b,long*c)*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);?第 04套:函数fun的功能是:从三个形参a,b,c 中

17、找出中间的那个数,作为函数值返回。例如,当 a=3,b=5,c=4时,中数为4。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.CK不得增行或删行,也不得更改程序的结构!给定源程序:#include int fun(int a,int b,int c)int t;t=(ab)?(b c?b :(ac?c:_1_):(ac)?_2_:(b c)?c:3);return t;)main()int al=3,a2=5,a3=4,r;r=fun(alz a2,a3);printf(nThe middle numb er is:%dn,

18、r);)解题思路:第一处:给三个数进行比较大小,所以应填:a。第二处:给三个数进行比较大小,所以应填:a。第三处:给三个数进行比较大小,所以应填:b.给定程序M0DI1.C中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为au,则将其转换为其后的第5 个字母;若小写字母为vz,使其值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#include char f

19、un(char c)if(c=A&c=a&c=v&c=z)c=c-21;return c;)main()char c lzc2;printf(nEnter a letter(A-Z):);cl=getchar();if(isupper(cl)c2=fun(cl);printf(HnnThe letter%c change to%cVn,cl,c2);else printf(nEnter(A-Z)!nH);?解题思路:第一处:变量c 错写成大写C 了。第二处:要求转换为其后的第5 个字母,所以应改为:c=c+5;。请编写函数fu n,其功能是:计算并输出例如,在主函数中从键盘给n 输 入 20后

20、,输出为:s=534.188884。注意:要 求 n 的值大于1 但不大于100,部分源程序在文件PR0G1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include doub le fun(int n)main()int n;doub le s;printf(nnlnput n:);scanf(%d,&n);s=fun(n);printf(nns=%fnn,s);NONO();解题思路:本题是根据公式计算多项式的值。注意变量的取值范围。参考答案:doub le fun(int n)int i;doub le

21、 fac=l.O;doub le sum=1.0;for(i=2;i=n;i+)fac+=sqrt(i);sum+=fac;?return sum;?第 05套:给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。请在程序的卜划线处填入正确的内容并把卜 一划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#define N 5typede

22、f struct int num;char name10;char tel10;STYPE;void check();/*f u n d*Iint fun(_ 1_*std)_ 2_*fp;int i;if(fp=fopen(myfile5.dat,wb)=NULL)return(O);printf(nOutput data to file!n);for(i=0;iN;i+)/*f o und*!fwrite(&stdi,sizeof(STYPE),1,_ 3_);fclose(fp);return(1);?main()STYPEs10=l,aaaaa,111111,l,b b b b b,2

23、22222,l,ccccc,333333,l,ddddd,444444,l,eeeee,555555;int k;k=fun(s);if(k=l)printf(Succeed!);check();elseprintf(Fail!);void check()FILE*fp;int i;STYPE s10;if(fp=fopen(myfile5.dat,rb)=NULL)printf(Fail!n);exit(O);printf(nRead file and output to screen:n);printf(n num name teln);for(i=0;iN;i+)fread(&si,si

24、zeof(STYPE),1,fp);printf(%6d%s%sn,si.num,si.name,si.tel);fclose(fp);?解题思路:本题是要求把指定的学生记录输出到指定的文件中。程序中共有三处要填上适当的内容,使程序能运行出正确的结果。第一处:结构定义自变量,因此应填写STYPE。第二处:在所填行的下面一行,使用fopen来创建一个二进制文件,但文件流的变量名fp已经给出,这样,此处只能填写FILE。每三处:fwrite是把变量中的内容写入指定文件中,再根据fwrite参数的使用要求,所以只能填写文件流变量fp。给定程序M0DI1.C中函数fun的功能是:先将在字符串s 中的字

25、符按正序存放到 t 串中,然后把s 中的字符按逆序连接到t 串的后面。例 如:当 s 中的字符串为:ABCDE时,则 t 中的字符串应为:ABCDEEDCBA。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#include void fun(char*s,char*t)int iz si;si=strlen(s);*f o u n d*/for(i=0;i=sl;i+)ti=si;for(i=0;isl;i+)TAB tsl+i=ssl-i-l;!f/tsl=0;main()char s100,t100

26、;printf(nPlease enter string s:);scanf(%s,s);fun(s,t);printf(The result is:%sn,t);解题思路:第一处:变量s i错写成了 s i。第二处:新串t的字符串结束位置不正确,应该是两倍的s i距离。函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c 中。合并的方式是:将 a 数的十位和个位数依次放在c 数的千位和十位上,b数的十位和个位数依次放在c 数的百位和个位匕例 如,当 a=45,b=12时,调用该函数后,c=4152o注意:部分源程序存在文件PR0G1.C中。数据文件IN.DAT中的数据不得修改

27、。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include void fun(int a,int b,long*c)main()int a,b;long c;printf(Input a,b:);scanf(%d,%d,&a,&b);fun(a,b,&c);printf(The result is:%dn,c);NONO();解题思路:本题是给出两个两位数的正整数分别取出各位上的数字,再按条件组成个新数。取 a 十位数字的方法:a/10取 a 个位数字的方法:a%10参考答案:void fun(int a,int b,long*c

28、)*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);第 06套:给定程序中,函数fun的功能是:将形参s 所指字符串中的所有数字字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。例如,s 所指字符串为:asdl23fgh5#43df,处理后新字符串为:123543asdfgh#df。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#include#include char*fun(ch

29、ar*s)int i,j,k,n;char*p,*t;n=strlen(s)+l;t=(char*)malloc(n*sizeof(char);p=(char*)malloc(n*sizeof(char);j=0;k=0;for(i=0;in;i+)if(isdigit(si)/*f o u n d*IP _ 1-=si;j+;elsetk=si;k+;)/*f o und*!for(i=0;i _ 2 _;i+)pj+i=ti;pj+k=O;/*f o(J n d*!return _3?main()char s80;printf(Please input:);scanf(%s,s);prin

30、tf(nThe result is:%sn,fun(s);解题思路:第一处:函数中申请了两个内存空间,其p是存放数字字符串,t是存放非数字字符串,根据条件可知,P依次存放数字字符串,其位置由j来控制,所以应填:jo第二处:利用for循环再把t中的内容依次追加到p中,其中t的长度为k,所以应填:k。第三处:最后返回p的首地址即可,所以应填:p。给定程序M0DI1.C中函数fu n的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为ab cdefg,b

31、所指字符串中的内容为1234时,c所指数组中的内容应该为a4b 3c2dlefg;而当a所指字符串中的内容为1234,b所指字符串中的内容为ab cdefg时,c所指数组中的内容应该为lg2f3e4dcb a。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#include void fun(char*a,char*b,char*c)int i,j;char ch;i=0;j=strlen(b)-l;/*f o u n d*/while(i j)ch =b i;b i=b j;b j=ch;i+;j-;?

32、while(*a|*b )/*fo u n d*!If(*a)*c=*a;C+;a+;if(*b )*c=*b;C+;b+;)*c=0;main()char sl100,s2100,t200;printf(nEnter si string:);scanf(%s,sl);printf(nEnter s2 string:);scanf(%s,s2);fun(si,s2,t);printf(nThe result is:%sn,t);解题思路:第一处:应该判断i 是否小于j,所以应改为:while(ij)。第二处:if错写成If。函数fun的功能是:将 s 所指字符串中下标为偶数同时ASCII值为奇

33、数的字符删除,s 所指串中剩余的字符形成的新串放在t 所指的数组中。例如,若 s 所指字符串中的内容为ABCDEFG12345,其中字符C 的 ASCH码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1 的 ASCH码值为奇数,在数组中的下标也为奇数,因此不应当删除,其它依此类推。最后t 所指的数组中的内容应是BDF12345。注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include void fun(char*s,char t)main()char s100,t10

34、0;printf(nPlease enter string S:);scanf(%s,s);fun(s,t);printf(nThe result is:%sn,t);NONO();?解题思路:本题是从个字符串按要求生成另 个新的字符串。我们使用for循环语句来解决这个问题。参考答案:void fun(char*s,char t)int i,j=0;for(i=0;i strlen(s);i+)if(!(i%2)=0&(si%2)tj+=si;tj=0;第 07套:给定程序中,函数fun的功能是计算下式例如,若形参e 的值为le-3,函数的返回值2.735678。请在程序的下划线处填入正确的内

35、容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include doub le fun(doub le e)int i;doub le s,x;/*f o u n d*Is=0;i=1x=1.0;while(xe)I*f o u n d*I2/*f o und*Ix=(2.0*i-l)/(_3_)*(2.0*i);s=s+x;return s;main()doub le e=le-3;printf(nThe result is:%fnzfun(e);解题思路:第一处:根据公式以及下面的程序,可以得出

36、i应为0。第二处:根据公式以及i的初值为0,所以应填:i+。第三处:根据公式要求,所以应填:2.0*i。给定程序M ODI1.C中函数f u n的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。例如,当s所指字符串为:A B C D 时,则t所指字符串中的内容应为:ABCDDCBA。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#include/*fo u n d*/void fun(char s,char t)int i,d;d=strlen(s);for(i=0;id;i

37、+)ti=si;for(i=0;id;i+)td+i=sd-l-i;!*f 1*/t2*d-l=0;main()char s100,t100;printf(nPlease enter string S:);scanf(%s,s);fun(s,t);printf(nThe result is:%sn,t);?解题思路:第一处:从函数体fun中可知,两个均为字符指针型变量,应改为:void fun(char*s,char*t)。第二处:字符串结束位置错误,应改为:t2*d=0;。函数fun的功能是:将 s 所指字符串中除了下标为奇数、同时ASCH值也为奇数的字符之外,其余的所有字符都删除,串中剩余

38、字符所形成的一个新串放在t 所指的数组中。例如,若 s 所指字符串中的内容为:ABCDEFG12345”,其中字符A 的 ASCH码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1 的 ASCH码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其它依此类推。最后t 所指的数组中的内容应是:135。注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include void fun(char*s,char t)main()char s100,t100;printf(nPl

39、ease enter string S:);scanf(%s,s);fun(s,t);printf(nThe result is:%sn,t);NONO();解题思路:本题是从一个字符串按要求生成另一个新的字符串。我们使用for循环语句来解决这个问题。参考答案:void fun(char*s,char t)int i,j=0;for(i=1;i strlen(s);i+=2)if(si%2)tj+=si;tj=0;?第 08套:给定程序中,函数fun的功能是计算卜式例如:若形参e 的值为le-3,函数的返回值为0.551690。请在程序的卜划线处填入正确的内容并把下划线删除,使程序得出正确的结

40、果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include doub le fun(doub le e)int i,k;doub le s,t,x;s=0;k=l;i=2;/*f o u n d*IX=_ 1 _/4;/*f o und*Iwhile(x _ 2_ e)s=s+k*x;k=k*(-1);t=2*i;/*f u n d*Ix=-3(t*t);i+;?return s;main()doub le e=le-3;printf(nThe result is:%fn,fun(e);?解题思路:第一处:根据公式,首项应该是3.

41、4,所以应填:3.第二处:当x大于e时,循环体才会运行,所以应填:。第三处:分子的值是2 i+l,所以应填:2*i+l。给定程序M 0D I1.C中函数f u n的功能是:求出以下分数序列的前n项之和。和值通过函数值返回到m ain函数。2 3 5 8 13 211 2 3 5 8 13例如,若n=5,则应输出:8.391667c请改正程序中的错误,使它能计算出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include/*fo u n d*/fun(int n)int a,b,c,k;doub le s;s=0.0;a=2;b =1;for(k

42、=1;k=n;k+)!*f 1*/s=s 4-(Doub le)a/b;c=a;a=a+b;b =c;)return s;)main()int n=5;printf(nThe value of function is:%lfnz fun(n);?解题思路:第一处:由于计算的实型值要通过函数返回,所以必须定义函数的返回类型,只要int或void可以省略,其他都要定义类型。由于返回是实型值,所以应在数名前加上doub le或 float等定义。第二处:doub le的 第 1 个字母错写成大写请编写一个函数fu n,它的功能是:求出一个2xM 整型二维数组中最大元素的值,并将此值返回调用函数。注意

43、:部分源程序存在文件PROG 1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#define M 4fun(int aM)main()intarr2M=5,8,3,45,76,-4,12,82;printf(max=%dn,fun(arr);NONO();解题思路:本题是求出一个2xM 整型二维数组中最大元素的值。参考答案:fun(int aM)int i,j,max=aOO;for(i=0;i2;i+)for(j=0;jM;j+)if(maxaij)max=aij;return max;第 09套:人员的记

44、录由编号和出生年、月、H组成,N 名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形 参 k 所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#define N 8typedef struct int num;int year,month,day;STU;int fun(STU*std,STU*k,int year)int i,n=0;f

45、or(i=0;iN;i+)/*f o und*Iif(_1_=year)I*f o u n d*Ikn+=2/*f o und*Ireturn(_3_);main()STU stdN=1,1984,2,15,2,1983,9,21,3,1984,9,1,4,1983,7,15,5,1985,9,28,6,1982,11,15,7,1982,6,22,8,1984,8,19);STU kN;int i,n,year;printf(Enter a year:);scanf(%d,&year);n=fun(std,k,year);if(n=0)printf(nNo person was b orn

46、in%d nzyear);else printf(nThese persons were b orn in%d nzyear);for(i=0;in;i+)printf(%d%d-%d-%dnzki.num,ki.year,ki.month,ki.day);)?解题思路:本题是从给定的人员数据中找出年龄相同的记录存入k 中,并返回符合条件的人数。第一处:断结构变量中的编号year是否相等,所以应填:stdi.year。第二处:把符合条件的记录依次存入实参k 中,所以应填:stdi第三处:返回符合满足条件的人数,所以应填:n。给定程序MODU.C的功能是:读入一个整数k(2k10000),打印它

47、的所有质因子(即所有为素数的因子)。例如,若输入整数:2310,则应输出:2、3、5、7、11请改正程序中的语法错误,使程序能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include/*f o u n d*/IsPrime(int n);int i,m;m=1;for(i=2;i n;i+)if!(n%i)m=0;b reak;return(m);main()intj,k;printf(nPlease enter an integer numb er b etween 2 and 10000:);scanf(%d,&k);printf(n

48、nThe prime factor(s)of%d is(are k);for(j=2;j=k;j+)if(!(k%j)&(IsPrime(j)printf(n%4d,j);printf(n);解题思路:第 处:函数定义的行尾有多余的分号。第二处:条件判断缺少圆括号。已知学生的记录由学号和学习成绩构成,N 名学生的数据已存入结构体数组a中。请编写函数fu n,函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的

49、若干语句。给定源程序:#include#include#define N 10typedef struct ss char num10;int s;STU;fun(STU a,STU*s)main()STU aN=A01,81,A02,89,A03,66,A04,87,A05,77ZA06,90,A07,79,A08,61,A09,80,A10z71,m;int i;printf(*The original data*n);for(i=0;i N;i+)printf(No=%s Mark=%dn,ai.num,ai.s);fun(a,&m);printf(,*THE RESULT*n);pri

50、ntf(The top:%s,%dn,m.num,m.s);NONO();解题思路:本题考察学生在一组记录中找出最高分。我们使用for循环语句来解决这个问题。参考答案:fun(STU a,STU*s)int i,max=aO.s,j=0;for(i=1;i N;i+)if(max ai.s)j=i;max=ai.s;*s=aj;第 10套:给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M 个字符串按长度由短到长进行排序。ss所指字符串数组中共有M 个字符串,且串长N。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁