无忧首页企业系统我的无忧
无忧服务:
兼职活动培训
娱乐交友:
交友社区资讯
全职实习:
实习暑假寒假
微信号:school51
扫一下,立即关注
加关注
在线支付,立省10元
下载新版APP
===大学生成长生活平台===

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

2012-12-26来源/作者:卫凯点击次数:1798

求最值

  1. 请补全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,%d\n",a,b,c);

  if (a>b)

  ___1___;

  else

  ___2___;

  if(max

  ___3___;

  printf("max=%d\n",max);

  }

  第一处:max=a

  第二处:max=b

  第三处:max=c

  解析:

  若a>b 则a较大,将其放入max中;否则将b存于max。

  此时,max中存放的就是前两个数中较大的,再将max与c比较。

  2. 函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返回。

  int fun(int a, int b, int c)

  {int t;

  t = (a>b) ? (b>c? b :(a>c?c:___1___)) : ((a>c)?___2___ : ((b>c)?c:___3___));

  return t;

  }

  第一处:a

  第二处:a

  第三处:b

  解析:条件表达式的理解。

  3. 请补全fun函数,该函数的功能是把从键盘输入的3个整数按从小到大输出。

  main()

  {int x,y,z,t;

  clrscr();

  printf("Input x,y,z\n");

  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;

  z=t;

  } /*交换z,y的值*/

  第一处:x>y

  第二处:x>z

  第三处:y>z

  解析:

  3个数排序,两两比较,小的放前,大者放后。

  交换。

  编辑推荐:

  2011年全国计算机等级二级C语言模拟试题及答案汇总

  2011年计算机等级二级C语言章节习题及答案汇总

  2011年计算机等级二级C语言课后练习题及答案解析汇总

  2011年全国计算机等级二级C笔试考前练习习题汇总

  2011年计算机二级考试C语言十套上机题汇总

  4. 请补全main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数,当输入的整数为0时结束。

  main()

  {int num[N];

  int i=-1;

  int max=0;

  clrscr();

  printf("\nInput integer number: \n");

  do

  { i++;

  printf("num[%d]=",i);

  scanf("%d",___1___);

  max= ___2___ num[i] : max;

  }while(___3___);

  printf("max=%d\n", max);

  }

  第一处:&num[i]

  第二处:max

  第三处:num[i]!=0

  解析:

  掌握求最值的一般方法:首先假定第一个数最大,从第二个开始与最大值进行比较,若比最大值还大,则替换;否则,保持不变。

  此题:掌握条件表达式的书写、含义。

  Max=max

  若vmax

  i=-1 i++ 循环条件,正确理解。

  5. 请补全fun函数,该函数的功能是:求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

  void fun(int *s, int t , int___1___)

  {

  int i ,max;

  max=s[0];

  for (i=0;i

  if (___2___)

  {

  max=s[i];

  *k=___3___;

  }

  }

  第一处:*k

  第二处:s[i]>max

  第三处:i

  解析:

  算法思想与第19题相同。

  记住:函数的参数有两种类型:值参、变参。值参相当于一个普通的局部变量。

  要通过函数的参数返回值(或返回多个值),需要使用变参,即参数是指针类型。

  return 仅能返回一个值。

  搞清 指针、地址、指针所指向变量的值间的关系。

  int *S 相当于 int S[ ]

  编辑推荐:

  2011年全国计算机等级二级C语言模拟试题及答案汇总

  2011年计算机等级二级C语言章节习题及答案汇总

  2011年计算机等级二级C语言课后练习题及答案解析汇总

  2011年全国计算机等级二级C笔试考前练习习题汇总

  2011年计算机二级考试C语言十套上机题汇总

  6. 请补充该fun函数,该函数的功能是:交换数组aa中最大和最小两个元素的位置,结果重新保存在原数组中,其它元素位置不变。注意数组aa中没有相同元素。

  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) if(___2___)

  9) min=i;

  10) }

  11) t=aa[max];

  12) ___3___;

  13) aa[min]=t;

  14) }

  第一处:aa[max]

  第二处:aa[min]>aa[i]

  第三处:aa[max]=aa[min]

  解析:

  算法思想与第19题相似。

  算法思想:假定最大、最小值是同一个元素(第一个);接下来将后面的元素依次开始比较,如果比最大值还大,则修改最大值;如果比最小值还小,则修改最小值。

  此题保存的是最大最小值的下标。

  最后,通过变量t,交换最大最小值。

  第4行:循环变量i的值可以从1开始。

  7. 给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。

  #include

  typedef struct{

  char Name[4];

  int age ;

  }STD;

  STD fun(STD std[], int n)

  {STD max;

  int i;

  max= ___1___;

  for(i=1; i

  if(max.age<___2___) max=std[i];

  return max;

  }

  main( )

  {STD std[5]={"aaa",17,"bbb",16,"ccc",18,"ddd",17,"eee",15 };

  STD max;

  max=fun(std,5);

  printf("\nThe result: \n");

  printf("\nName : %s, Age : %d\n", ___3___,max.age);

  }

  第一处:*std

  第二处:std[i].age

  第三处:max.name

  解析:

  求最大值。

  搞清结构体变量类型声明、变量声明、初始化、赋值、输入、输出的方法。

  Max=*std 也可以max=std[0] 即结构体变量之间可相互赋值。

  但不能整体输入输出。仅能一个数据项、一个数据项地单独进行。

  编辑推荐:

  2011年全国计算机等级二级C语言模拟试题及答案汇总

  2011年计算机等级二级C语言章节习题及答案汇总

  2011年计算机等级二级C语言课后练习题及答案解析汇总

  2011年全国计算机等级二级C笔试考前练习习题汇总

  2011年计算机二级考试C语言十套上机题汇总

  8. 请补全main函数,该函数的功能是:如果数组aa的前一个元素比后一个元素小,则把它保存在数组bb中并输出 。

  main()

  {int i,n=0;

  int aa[N]={45,55,62,42,35,52,78,95,66,73};

  int bb[N];

  clrscr();

  for(i=0;i<___1___;i++)

  if(aa[i]

  ___2___;

  printf("\n*** display bb ***\n");

  for(i=0;i

  printf("bb[%d]=- ",___3___);

  }

  第一处:N-1

  第二处:bb[n++]=aa[i]

  第三处:i,bb[i]

  解析:

  由于bb[ ]数组中实际元素个数未知,故需要边比较,边统计。

  n作为bb[ ]数组元素的个数,开始n=0,比较aa[ ]中相邻两个元素,满足条件则将其放入bb[]中,且个数加1。

  9. 已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体中,给定程序的功能是找出成绩最低的学生记录,通过形参返回主函数。

  typedef struct ss

  {char num[10]; int s; } STU;

  fun(STU a[], STU *s)

  {___1___ h;

  int i ;

  h = a[0];

  for ( i = 1; i < N; i++ )

  if ( a[i].s < h.s ) ___2___ = a[i];

  *s = ___3___ ;

  }

  第一处:STU

  第二处:h

  第三处:h

  解析:

  记住:要想通过函数的参数返回结果,该参数需要使用指针类型或者数组。

  求最小值,算法思想同19题。

  第三处:也可以是 s=&h 指针赋值。

  编辑推荐:

  2011年全国计算机等级二级C语言模拟试题及答案汇总

  2011年计算机等级二级C语言章节习题及答案汇总

  2011年计算机等级二级C语言课后练习题及答案解析汇总

  2011年全国计算机等级二级C笔试考前练习习题汇总

  2011年计算机二级考试C语言十套上机题汇总

  10. 给定程序的功能是求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。

  #include

  float fun ( float ___1___ )

  {

  return 3.14159 * ___2___ /2.0;

  }

  main ( )

  {float x;

  printf ( "Enter x: ");

  scanf ( "%f", ___3___ );

  printf (" s = %f\n ", 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

  #include

  main()

  {float a,b,c,disc,x1,x2;

  //clrscr(); //clear screen

  do

  {

  printf("Input a, b, c: ");

  scanf("%f,%f,%f",&a,&b,&c);

  disc=b*b-4*a*c;

  if(disc<0)

  printf("disc=%f \n Input again!\n",disc);

  }while(___1___);

  printf("*******the result*******\n");

  x1=___2___;

  x2=___3___;

  printf("\nx1=%6.2f\nx2=%6.2f\n",x1,x2);

  }

  第一处:disc<0

  第二处:(-b+sqrt(disc))/(2*a)

  第三处:(-b-sqrt(disc))/(2*a)

  解析:

  搞清while 循环与do……while的差别。

  表达式的正确书写。加上括号。

  此题有一定的问题 a=0 ?

  编辑推荐:

  2011年全国计算机等级二级C语言模拟试题及答案汇总

  2011年计算机等级二级C语言章节习题及答案汇总

  2011年计算机等级二级C语言课后练习题及答案解析汇总

  2011年全国计算机等级二级C笔试考前练习习题汇总

  2011年计算机二级考试C语言十套上机题汇总

  12. 请补全main函数,该函数的功能是:输出方程A+B=52,A+2B=60的一组正整数解,

  main()

  {int i,j,k;

  clrscr();

  for(i=0;i<100;i++)

  for(j=0;j<100;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 == 0

  第三处:flag

  解析:

  条件表达式的正确书写。

  三个if可以缩成一个if

  if((n%4==0&&n0!=0) ||n@0==0)。前面的括号不加也可以,最好还是加上吧。

  flag起标记的作用。

  if (flag) 等价于if (flag!=0)

  if (!flag) 等价于if (flag= =0)

  0为假,非0即为真。

  编辑推荐:

  2011年全国计算机等级二级C语言模拟试题及答案汇总

  2011年计算机等级二级C语言章节习题及答案汇总

  2011年计算机等级二级C语言课后练习题及答案解析汇总

  2011年全国计算机等级二级C笔试考前练习习题汇总

  2011年计算机二级考试C语言十套上机题汇总

  14. 给定程序的功能是将n个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分段的人数存到b数组中:成绩为60到69的人数存到b[0]中,成绩70到79的人数存到b[1],成绩为80到89的人数存到b[2],成绩90到99的人数存到b[3],成绩为100的人数存到b[4],成绩为60分以下的人数存到[5]中。

  void fun(int a[], int b[], int n)

  {int i;

  for (i=0; i<6; i++) b[i] = 0;

  for (i=0; i< ___1___; i++)

  if (a[i] < 60) b[5]++;

  ___2___ b[(a[i]- 60)/10]++;

  }

  main()

  {int i, a[100]={ 93, 85, 77, 68, 59, 43, 94, 75, 98}, b[6];

  fun(___3___, 9);

  printf("the result is: ");

  for (i=0; i<6; i++) printf("%d ", b[i]);

  printf("\n");

  }

  第一处:i<6

  第二处:else

  第三处:a, b

  解析:

  数组 a 实际有9个元素。

  数组 b 实际有6个元素。

  理解语句 b[(a[i]- 60)/10]++; 的含义。动手。

  个数的计数。

  编辑推荐:

  2011年全国计算机等级二级C语言模拟试题及答案汇总

  2011年计算机等级二级C语言章节习题及答案汇总

  2011年计算机等级二级C语言课后练习题及答案解析汇总

  2011年全国计算机等级二级C笔试考前练习习题汇总

  2011年计算机二级考试C语言十套上机题汇总





相关阅读



关于我们 | 联系我们 | 用户指南 | 网站地图 | 意见建议 | 会员注册 | 用户协议 | 隐私政策