1、二级C语言填空题练习题及答案解析41. 请补全main函数,该函数的功能是:从键盘上输入3个整数,然后找出最大的数并输出。main()int a,b,c,max;clrscr();printf(nInput three numbers:n);scanf(%d,%d,%d,&a,&b,&c);printf(Thethree numbers are:%d,%d,%dn,a,b,c);if (ab)_1_;els_2_;if(max _3_;printf(max=%dn,max);第一处:max=a第二处:max=b第三处:max=c解析:若ab 则a较大,将其放入max中;否则将b存于max。此时
2、,max中存放的就是前两个数中较大的,再将max与c比较。2. 函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返回。int fun(int a, int b, int c)int t;t = (ab) ? (bc? b :(ac?c:_1_) : (ac)?_2_ : (bc)?c:_3_)4. 请补全main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数,当输入的整数为0时结束。main()int numN;int i=-1;int max=0;clrscr();printf(nInput integer number: n);do i+;pr
3、intf(num%d=,i);scanf(%d,_1_);max= _2_ numi : max;while(_3_);printf(max=%dn, max);第一处:&numi第二处:max 第三处:numi!=0解析:掌握求最值的一般方法:首先假定第一个数最大,从第二个开始与最大值进行比较,若比最大值还大,则替换;否则,保持不变。此题:掌握条件表达式的书写、含义。Max=max 若vmax i=-1 i+ 循环条件,正确理解。5. 请补全fun函数,该函数的功能是:求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。void fun(int *s, int t , int_1_)
4、int i ,max;max=s0;for (i=0;i if (_2_)max=si;*k=_3_;第一处:*k第二处:simax第三处:i解析:算法思想与第19题相同。记住:函数的参数有两种类型:值参、变参。值参相当于一个普通的局部变量。要通过函数的参数返回值(或返回多个值),需要使用变参,即参数是指针类型。return 仅能返回一个值。搞清 指针、地址、指针所指向变量的值间的关系。int *S 相当于 int S 1) void fun(int aa)2) int i,j,t;3) int max=0,min=0;4) for(i=0;i 5) 6) if(_1_)7) max=i;8)
5、 if(_2_)9) min=i;10) 11) t=aamax;12) _3_;13) aamin=t;14) 第一处:aamax 第二处:aaminaai第三处:aamax=aamin解析:算法思想与第19题相似。算法思想:假定最大、最小值是同一个元素(第一个);接下来将后面的元素依次开始比较,如果比最大值还大,则修改最大值;如果比最小值还小,则修改最小值。此题保存的是最大最小值的下标。最后,通过变量t,交换最大最小值。第4行:循环变量i的值可以从1开始。7. 给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。#includ
6、etypedef structchar Name4;int age ;STD;STD fun(STD std, int n)STD max;int i;max= _1_;for(i=1; i if(max.agey第二处:xz第三处:yz解析:3个数排序,两两比较,小的放前,大者放后。交换。8. 请补全main函数,该函数的功能是:如果数组aa的前一个元素比后一个元素小,则把它保存在数组bb中并输出 。main()int i,n=0;int aaN=45,55,62,42,35,52,78,95,66,73;int bbN;clrscr();for(i=0;i_1_;i+)if(aai _2_
7、;printf(n* display bb *n);for(i=0;i printf(bb%d=- ,_3_);第一处:N-1第二处:bbn+=aai第三处:i,bbi解析:由于bb 数组中实际元素个数未知,故需要边比较,边统计。n作为bb 数组元素的个数,开始n=0,比较aa 中相邻两个元素,满足条件则将其放入bb中,且个数加1。9. 已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体中,给定程序的功能是找出成绩最低的学生记录,通过形参返回主函数。typedef struct sschar num10; int s; STU;fun(STU a, STU *s)_1_ h;in
8、t i ;h = a0;for ( i = 1; i N; i+ )if ( ai.s h.s ) _2_ = ai;*s = _3_ ;第一处:STU第二处:h第三处:h解析:记住:要想通过函数的参数返回结果,该参数需要使用指针类型或者数组。求最小值,算法思想同19题。第三处:也可以是 s=&h 指针赋值。10. 给定程序的功能是求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。#include float fun ( float _1_ )return 3.14159 * _2_ /2.0;main ( )float x;printf ( Enter x: );sca
9、nf ( %f, _3_ );printf ( s = %fn , fun ( x ) );第一处:r第二处:r * r第三处:&x解析:这题太简单了。11. 请补全main函数,该函数的功能是求方程ax2+bx+c=0的两个实数根。方程的系数a,b,c从键盘输入,如果判别式(disc=b*b-4*a*c)小于0,则要求重新输入a,b,c的值。#include#includemain()float a,b,c,disc,x1,x2;/clrscr(); /clear screendoprintf(Input a, b, c: );scanf(%f,%f,%f,&a,&b,&c);disc=b*
10、b-4*a*c;if(disc0)printf(disc=%f n Input again!n,disc);while(_1_);printf(*the result*n);x1=_2_;x2=_3_;printf(nx1=%6.2fnx2=%6.2fn,x1,x2);第一处:disc0第二处:(-b+sqrt(disc)/(2*a)第三处:(-b-sqrt(disc)/(2*a)解析:搞清while 循环与dowhile的差别。表达式的正确书写。加上括号。此题有一定的问题 a=0 ?12. 请补全main函数,该函数的功能是:输出方程A+B=52,A+2B=60的一组正整数解,main()i
11、nt i,j,k;clrscr();for(i=0;i100;i+)for(j=0;j100;j+)if(_1_)printf(A=-,B=-,_2_);第一处:i+j= =52&i+2*j= =60第二处:i,j解析:方程:满足条件的组合就是方程的解。枚举法。当方程的个数少于未知数的个数时,一般使用枚举法(多重循环)13. 请补全fun函数,该函数的功能是,判断一个年是否为闰年。int fun(int n)int flag=0;if (n % 4=0)if (_1_)flag=1;if (_2_)flag=1;return _3_;第一处:n % 100 != 0第二处:n % 400 =
12、0第三处:flag解析:条件表达式的正确书写。三个if可以缩成一个ifif(n%4=0&n_0!=0) |n0=0)。前面的括号不加也可以,最好还是加上吧。flag起标记的作用。if (flag) 等价于if (flag!=0)if (!flag) 等价于if (flag= =0)0为假,非0即为真。14. 给定程序的功能是将n个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分段的人数存到b数组中:成绩为60到69的人数存到b0中,成绩70到79的人数存到b1,成绩为80到89的人数存到b2,成绩90到99的人数存到b3,成绩为100的人数存到b4,成绩为60分以下的人数存到5中。voi
13、d fun(int a, int b, int n)int i;for (i=0; i6; i+) bi = 0;for (i=0; i _1_; i+)if (ai 60) b5+;_2_ b(ai- 60)/10+;main()int i, a100= 93, 85, 77, 68, 59, 43, 94, 75, 98, b6;fun(_3_, 9);printf(the result is: );for (i=0; i6; i+) printf(%d , bi);printf(n);第一处:i6第二处:else第三处:a, b解析:数组 a 实际有9个元素。数组 b 实际有6个元素。理解语句 b(ai- 60)/10+; 的含义。动手。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1