模拟试题

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

2014年3月全国计算机二级C语言上机模拟试题四之3

来源:2exam.com 2013-10-30 19:04:41

给定源程序: 

  #include <stdio.h> 

  #define N 50 

  #define M 11 

  void fun( int *a, int *b) 

  { 

  } 

  double rnd() 

  { static t=29,c=217,m=1024,r=0; 

  r=(r*t+c)%m; return((double)r/m); 

  } 

  main() 

  { int age[N], i, d[M]; 

  for(i=0; i<N;i++)age[i]=(int)(115*rnd()); 

  printf("The original data :\n"); 

  for(i=0;i<N;i++) printf((i+1)%10==0?"%4d\n":"%4d",age[i]); 

  printf("\n\n"); 

  fun( age, d); 

  for(i=0;i<10;i++)printf("%4d---%4d : %4d\n",i*10,i*10+9,d[i]); 

  printf(" Over 100 : %4d\n",d[10]); 

  NONO(d); 

  } 

  解题思路: 

  本题是统计各年龄段的人数。 

  1. 初始化各年龄段人数为0。 

  2. 使用for循环以及求出各年龄的十位数字作为存放人数的地址,如果大于值大于10,则

  存入d[10]中(大于110岁的人)。 

  参考答案: 

  void fun( int *a, int *b) 

  { 

  int i, j ; 

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

  for(i = 0 ; i < N ; i++) { 

  j = a[i] / 10 ; 

  if(j > 10) b[M - 1]++ ; else b[j]++ ; 

  } 

  } 

  double rnd() 

  { static t=29,c=217,m=1024,r=0; 

  r=(r*t+c)%m; return((double)r/m); 

  }

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