2013年计算机二级C语言上机题库第三十四套及答案解析

2014-11-23 20:20:27 · 作者: · 浏览: 26

  填空题
  用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数
  表中找下一个非0数,并从数表中删去该数的所有倍数;依此类推,直到所找的下一个数等于n为止。这样会得到一个序列:
  2,3,5,7,11,13,17,19,23,…… 函数fun用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。
  请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  注意:源程序存放在考生文件夹下的BLANK1.C中。
  不得增行或删行,也不得更改程序的结构!
  给定源程序:
  #include
  int fun(int n)
  { int a[10000], i,j, count=0;
  for (i=2; i<=n; i++) a[i] = i;
  i = 2;
  while (i   for (j=a[i]*2; j<=n; j+=___1___)
  a[j] = 0;
  i++;
  while (___2___==0)

  i++;
  }
  printf("\nThe prime number between 2 to %d\n", n);
  for (i=2; i<=n; i++)
  if (a[i]!=___3___)
  { count++; printf( count%15 "%5d":"\n%5d",a[i]); }
  return count;
  }
  main()
  { int n=20, r;
  r = fun(n);
  printf("\nThe number of prime is : %d\n", r);
  }
   解题思路:
  第一处:所有2的倍数的数从数表中删去,所以应填:a[i]。
  第二处:找出下一个不是的a[i],所以应填:a[i]。
  第三处:输出素数,只要判断a[i]不是0就是素数,所以应填:0。