- 2022-04-07 发布 |
- 37.5 KB |
- 14页



申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
文档介绍
2011年二级C语言填空题练习题及答案解析(4)
1.请补全main函数,该函数的功能是:从键盘上输入3个整数,然后找出最大的数并输出。 main() {inta,b,c,max; clrscr(); printf("nInputthreenumbers:n"); scanf("%d,%d,%d",&a,&b,&c); printf("Thethreenumbersare:%d,%d,%dn",a,b,c); if(a>b) ___1___; els ___2___; if(max ___3___; printf("max=%dn",max); } 第一处:max=a 第二处:max=b 第三处:max=c 解析: 若a>b则a较大,将其放入max中;否则将b存于max。 此时,max中存放的就是前两个数中较大的,再将max与c比较。 2.函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返回。n intfun(inta,intb,intc) {intt; t=(a>b)?(b>c?b:(a>c?c:___1___)):((a>c)?___2___:((b>c)?c:___3___)) 4.请补全main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数,当输入的整数为0时结束。 main() {intnum[N]; inti=-1; intmax=0; clrscr(); printf("nInputintegernumber:n"); do {i++; printf("num[%d]=",i); scanf("%d",___1___); max=___2___num[i]:max; }while(___3___); printf("max=%dn",max); } 第一处:&num[i] 第二处:max 第三处:num[i]!=0 解析:n 掌握求最值的一般方法:首先假定第一个数最大,从第二个开始与最大值进行比较,若比最大值还大,则替换;否则,保持不变。 此题:掌握条件表达式的书写、含义。 Max=max 若vmax i=-1i++循环条件,正确理解。 5.请补全fun函数,该函数的功能是:求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。 voidfun(int*s,intt,int___1___) { inti,max; max=s[0]; for(i=0;i if(___2___) { max=s[i]; *k=___3___; } } 第一处:*k 第二处:s[i]>max 第三处:i 解析:n 算法思想与第19题相同。 记住:函数的参数有两种类型:值参、变参。值参相当于一个普通的局部变量。 要通过函数的参数返回值(或返回多个值),需要使用变参,即参数是指针类型。 return仅能返回一个值。 搞清指针、地址、指针所指向变量的值间的关系。 int*S相当于intS[]1)voidfun(intaa[]) 2){inti,j,t; 3)intmax=0,min=0; 4)for(i=0;i 5){ 6)if(___1___) 7)max=i; 8)if(___2___) 9)min=i; 10)} 11)t=aa[max]; 12)___3___; 13)aa[min]=t; 14)} 第一处:aa[max] 第二处:aa[min]>aa[i]n 第三处:aa[max]=aa[min] 解析: 算法思想与第19题相似。 算法思想:假定最大、最小值是同一个元素(第一个);接下来将后面的元素依次开始比较,如果比最大值还大,则修改最大值;如果比最小值还小,则修改最小值。 此题保存的是最大最小值的下标。 最后,通过变量t,交换最大最小值。 第4行:循环变量i的值可以从1开始。 7.给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。 #include typedefstruct{ charName[4]; intage; }STD; STDfun(STDstd[],intn) {STDmax; inti; max=___1___; for(i=1;i if(max.age<___2___)max=std[i]; returnmax; }n main() {STDstd[5]={"aaa",17,"bbb",16,"ccc",18,"ddd",17,"eee",15}; STDmax; max=fun(std,5); printf("nTheresult:n"); printf("nName:%s,Age:%dn",___3___,max.age); } 第一处:*std 第二处:std[i].age 第三处:max.name 解析: 求最大值。 搞清结构体变量类型声明、变量声明、初始化、赋值、输入、输出的方法。 Max=*std也可以max=std[0]即结构体变量之间可相互赋值。 但不能整体输入输出。仅能一个数据项、一个数据项地单独进行。 returnt; } 第一处:a 第二处:a 第三处:b 解析:条件表达式的理解。n 3.请补全fun函数,该函数的功能是把从键盘输入的3个整数按从小到大输出。 main() {intx,y,z,t; clrscr(); printf("Inputx,y,zn"); scanf("%d%d%d",&x,&y,&z); if(___1___) { t=x; x=y; y=t; }/*交换x,y的值*/ if(___2___) { t=z; z=x; x=t; }/*交换x,z的值*/ if(___3___) { t=y; y=z;n z=t; }/*交换z,y的值*/ 第一处:x>y 第二处:x>z 第三处:y>z 解析: 3个数排序,两两比较,小的放前,大者放后。 交换。8.请补全main函数,该函数的功能是:如果数组aa的前一个元素比后一个元素小,则把它保存在数组bb中并输出。 main() {inti,n=0; intaa[N]={45,55,62,42,35,52,78,95,66,73}; intbb[N]; clrscr(); for(i=0;i<___1___;i++) if(aa[i] ___2___; printf("n***displaybb***n"); for(i=0;i printf("bb[%d]=-",___3___); }n 第一处:N-1 第二处:bb[n++]=aa[i] 第三处:i,bb[i] 解析: 由于bb[]数组中实际元素个数未知,故需要边比较,边统计。 n作为bb[]数组元素的个数,开始n=0,比较aa[]中相邻两个元素,满足条件则将其放入bb[]中,且个数加1。 9.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体中,给定程序的功能是找出成绩最低的学生记录,通过形参返回主函数。 typedefstructss {charnum[10];ints;}STU; fun(STUa[],STU*s) {___1___h; inti; h=a[0]; for(i=1;i查看更多
相关文章
- 当前文档收益归属上传用户