就业数据资源平台
当前位置:首页 > C语言程序设计
2014年全国计算机二级C语言上机模拟试题及答案4

甲乙丙丁四人同时开始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次, 丙 每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函数fun的功能是根据形参 提供的值,求出总共听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时 炸响,只算一次响声,第一次响声是在第0秒。 

  例如,若t1=7,t2=5,t3=6,t4=4,n=10,则总共可听到28次鞭炮声。 

  请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 

  注意:源程序存放在考生文件夹下的BLANK1.C中。 

  不得增行或删行,也不得更改程序的结构! 

  给定源程序: 

  #include  

  #define OK(i, t, n) ((___1___%t==0) && (i/t  int fun(int t1, int t2, int t3, int t4, int n) 

  { int count, t , maxt=t1; 

  if (maxt < t2) maxt = t2; 

  if (maxt < t3) maxt = t3; 

  if (maxt < t4) maxt = t4; 

  count=1; /* 给count赋初值 */ 

  for(t=1; t< maxt*(n-1); ___2___) 

  { 

  if(OK(t, t1, n) || OK(t, t2, n)|| OK(t, t3, n) || OK(t, t4, n) ) 

  count++; 

  } 

  return ___3___; 

  } 

  main() 

  { int t1=7, t2=5, t3=6, t4=4, n=10, r; 

  r = fun(t1, t2, t3, t4, n); 

  printf("The sound : %d\n", r); 

  }


  解题思路: 

  第一处:根据定义的要求,所以应填:i。 

  第二处:for循环语句的增量,所以应填:t++。 

  第三处:返回统计次数,所以应填:count。 

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

  给定程序MODI1.C中函数fun的功能是: 根据输入的三个边长(整型值), 判断能否构成三角形; 构成的是等边三角形, 还是等腰三角形。若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2, 若能构成一般三角形函数返回1, 若不能构成三角形函数返回0。 

  请改正函数fun中指定部位的错误, 使它能得出正确的结果。 

  注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构! 

  给定源程序: 

  #include  

  #include  

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

  { if(a+b>c && b+c>a && a+c>b) { 

  if(a==b && b==c) 

  return 3; 

  else if(a==b||b==c||a==c) 

  return 2; 

  else retrun 1 

  } 

  else return 0; 

  } 

  main() 

  { int a,b,c,shape; 

  printf("\nInput a,b,c: "); scanf("%d%d%d",&a,&b,&c); 

  printf("\na=%d, b=%d, c=%d\n",a,b,c); 

  shape =fun(a,b,c); 

  printf("\n\nThe shape : %d\n",shape); 

  }


  解题思路: 

  第一处:函数有返回值,不能定义为void,所以应改为:int fun(int a,int b,int c)。 

  第二处:语句后缺少分号。 

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

  请编写函数fun, 其功能是: 计算并输出3到n之间(含3和n)所有素数的平方根之和。 

  例如, 在主函数中从键盘给n输入100后,输出为: sum=148.874270。 

  注意: 要求n的值大于2但不大于100。 

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

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

  给定源程序: 

  #include  

  #include  

  double fun(int n) 

  { 

  } 

  main() 

  { int n; double sum; 

  printf("\n\nInput n: "); scanf("%d",&n); 

  sum=fun(n); 

  printf("\n\nsum=%f\n\n",sum); 

  NONO(); 

  }


  解题思路: 

  本题是计算并输出3到n之间(含3和n)所有素数的平方根之和。 

  参考答案: 

  double fun(int n) 

  { 

  int i,j=0; 

  double s=0; 

  for (i=3; i<=n; i++) { 

  for (j=2; j  if (i%j == 0) break; 

  if (j == i) s=s+sqrt(i); 

  } 

  return s; 

  } 

  ※※※※※※※※※※※※※※※※※※※※※※※※※ 

就业数据资源平台