2011年二级C语言填空题练习题及答案解析(4)

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

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
查看更多

相关文章