模拟试题

3773考试网计算机等级考试模拟试题正文

2014年3月全国计算机二级C语言上机模拟试题五十一3

来源:2exam.com 2013-11-12 16:18:58

解题思路: 

  第一处:应求累加和,而不赋值,所以应改为t+=s[k];。 

  第二处:ave不需要取地址,直接赋给*aver就可以了。 

  *************************************************** 

  请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。 

  例如, 输入如下整数: 876 675 896 101 301 401 980 431 451 777 

  则输出结果为: 6, 980 

  注意: 部分源程序在文件PROG1.C文件中。 

  请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 

  给定源程序: 

  #include  

  int fun(int *s, int t, int *k) 

  { 

  } 

  main( ) 

  { 

  int a[10]={876,675,896,101,301,401,980,431,451,777}, k ; 

  fun(a, 10, &k) ; 

  printf("%d, %d\n", k, a[k]) ; 

  NONO( ) ; 

  } 

  解题思路: 

  本题是考察考生如何在指定的数组找出最大元素值的下标,通过形参*k返回到主程序中。给出的程序是使用for循环语句进行处理的,在循环之前,首先把数组的第一个元素值赋给最大值变量max,位置pos为0,然后通过循环依次判断下一元素值是否大于最大值max,如果大于,那么把这个数重新赋给max,位置i赋给pos,循环结果,即可得到最大值的位置pos,最后执行语句*k=pos就可以实现返回了。 

  参考答案: 

  int fun(int *s, int t, int *k) 

  { 

  int i, pos = 0, max = *s ; 

  for(i = 1 ; i < t ; i++) { 

  if(max < *(s + i)) { 

  max = *(s + i) ; 

  pos = i ; 

  } 

  } 

  *k = pos ; 

  } 

触屏版 电脑版
3773考试网 琼ICP备12003406号-1