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

  给定程序中,函数fun的功能是:判定形参a所指的N×N(规定N为奇数)的矩阵是否是"幻方",若是,函数返回值为1; 不是,函数返回值为0。"幻方"的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。 

  例如,以下3×3的矩阵就是一个"幻方": 


  4 9 2 


  3 5 7 


  8 1 6 


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


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


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


  给定源程序: 


  #include  


  #define N 3 


  int fun(int (*a)[N]) 


  { int i,j,m1,m2,row,colum; 


  m1=m2=0; 


  for(i=0; i  { j=N-i-1; m1+=a[i][i]; m2+=a[i][j]; } 


  if(m1!=m2) return 0; 


  for(i=0; i  row=colum= __1__; 


  for(j=0; j  { row+=a[i][j]; colum+=a[j][i]; } 


  if( (row!=colum) __2__ (row!=m1) ) return 0; 


  } 


  return __3__; 


  } 


  main() 


  { int x[N][N],i,j; 


  printf("Enter number for array:\n"); 


  for(i=0; i  for(j=0; j  printf("Array:\n"); 


  for(i=0; i  { for(j=0; j  printf("\n"); 


  } 


  if(fun(x)) printf("The Array is a magic square.\n"); 


  else printf("The Array isn’t a magic square.\n"); 


  } 



  解题思路: 


  第一处:行列变量row和colum的值初始化为0。 


  第二处:两个条件只要有一个不满足就返回0,所以应填:||。 


  第三处:如果矩阵是“幻方”,则返回1。 


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


  给定程序MODI1.C中fun函数的功能是: 根据整型形参m,计算如下公式的值。  


  1     1          1 


  t = 1 - ----- - ----- - …… - ----- 


  2     3         m 


  例如,若主函数中输入5,则应输出 -0.283333。 


  请改正函数fun中的错误或在横线处填上适当的内容并把横线删除, 使它能计算出正确的结果。 


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


  给定源程序: 


  #include  


  double fun( int m ) 


  { 


  double t = 1.0; 


  int i; 


  for( i = 2; i <= m; i++ ) 


  t = 1.0-1 /i; 


  _______; 


  } 


  main() 


  { 


  int m ; 


  printf( "\nPlease enter 1 integer numbers:\n" ); 


  scanf( "%d", &m); 


  printf( "\n\nThe result is %lf\n", fun( m ) ); 


  } 


  解题思路: 


  第一处:在除法运算中,如果除数和被除数都是整数,所么所除结果也是整数,因此应改为t-=1./i。 


  第二处:应是返回公式的值,函数中公式的值是存放在临时变量t中,所以应填return t;。 


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


  请编写一个函数,函数的功能是删除字符串中的所有空格。 


  例如, 主函数中输入"asd af aa z67", 则输出为 "asdafaaz67"。 


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


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



  给定源程序: 


  #include  


  #include  


  int fun(char *str) 


  { 


  } 


  main() 


  { 


  char str[81]; 


  int n; 


  printf("Input a string:") ; 


  gets(str); 


  puts(str); 


  fun(str); 


  printf("*** str: %s\n",str); 


  NONO(); 


  } 


  解题思路: 


  本题是考察考生怎样利用字符串指针来删除字符串的空格字符。在函数开始处把指针p先指


  向字符串str以及位置变量i置0,然后采用while循环和字符串指针p来处理的,每循环一次来判断指针p所指的字符是否为空格,如果不是空格,则把该字符写到str字符串中,位置由i来控制,如果是空格,则不处理,继续取下一字符,直至字符串结束为止,最后再把字符串结束符写到


  位置为i的str上,再通过形参str返回。 


  参考答案: 


  int fun(char *str) 


  { 


  char *p = str ; 


  int i = 0 ; 


  while(*p) { 


  if(*p != ’ ’) str[i++] = *p ; 


  p++ ; 


  } 


  str[i] = 0 ; 


  } 


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

就业数据资源平台