频道栏目
首页 > 资讯 > C语言 > 正文

2014年计算机二级C语言上机模拟试题80

13-11-18        来源:[db:作者]  
收藏   我要投稿
 给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。 

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

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

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

  给定源程序: 

  #include  

  void fun(char *s) 

  { int i, j, n; 

  for(i=0; s[i]!=’’; i++) 

  if(s[i]>=’0’ ___1___ s[i]<=’9’) 

  { n=0; 

  while(s[i+1+n]!= ___2___) n++; 

  for(j=i+n+1; j>i; j--) 

  s[j+1]= ___3___; 

  s[j+1]=’*’; 

  i=i+1; 

  } 

  } 

  main() 

  { char s[80]="ba3a54cd23a"; 

  printf("nThe original string is : %sn",s); 

  fun(s); 

  printf("nThe result is : %sn",s); 

  }

  解题思路: 

  第一处:判断是数字,应该使用“与”,所以应填:&&。 

  第二处:判断字符串是否是字符串结束符,所以应填:’’。 

  第三处:如果当前字符是数字字符,则把当前字符以后的所有字符往后一个位置,所以应填:s[j]。 

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

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

  1    1     1          1 

  y = 1 + ----- + ----- + ----- + …… + ----- 

  2*2  3*3   4*4        m*m 

  例如,若 m 中的值为: 5,则应输出:1.463611。 

  请改正程序中的错误,使它能得出正确的结果。 

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

  给定源程序: 

  #include  

  double fun ( int m ) 

  { double y = 1.0 ; 

  int i; 

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

  y += 1 / (i * i) ; 

  return( y ) ; 

  } 

  main( ) 

  { int n = 5 ; 

  printf( "nThe result is %lfn", fun ( n ) ) ; 

  }

 解题思路: 

  第一处:使用for循环计算公式,必须计算到m,所以应改为for(i=2; i<=m; i++)。 

  第二处:在除法运算中,如果除数和被除数都是整数,所以所除结果也是整数,因此应改为y+=1./(i*i)。 

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

  请编写函数fun, 函数的功能是:实现B=A+A’, 即把矩阵A加上A的转置, 存放 在矩阵B中。计算结果在 main 函数中输出。 

  例如,输入下面的矩阵: 其转置矩阵为: 

  1 2 3 1 4 7 

  4 5 6 2 5 8 

  7 8 9 3 6 9 

  程序输出: 

  2 6 10 

  6 10 14 

  10 14 18 

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

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

  给定源程序: 

  #include  

  void fun ( int a[3][3], int b[3][3]) 

  { 

  } 

  main( ) /* 主程序 */ 

  { int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, t[3][3] ; 

  int i, j ; 

  fun(a, t) ; 

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

  for (j = 0 ; j < 3 ; j++) 

  printf("}", t[i][j]) ; 

  printf("n") ; 

  } 

  NONO () ; 

  }


  解题思路: 

  本题考察考生如何实现矩阵的转置,然后执行两个矩阵中的元素值相加生成一个新的矩阵。矩阵转置实现上就是原行元素值变为列元素值,原列元素值变为行元素值。 

  参考答案: 

  void fun ( int a[3][3], int b[3][3]) 

  { 

  int c[3][3] ; 

  int i, j ; 

  for(i = 0 ; i < 3 ; i++) 

  for(j = 0 ; j < 3 ; j++) { 

  c[i][j] = a[j][i] ; /* 矩阵的转置 */ 

  b[i][j] = a[i][j] + c[i][j] ; 

  } 

  } 

相关TAG标签
上一篇:2014年计算机二级C语言上机模拟试题79
下一篇:2014年计算机二级C语言上机模拟试题81
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站