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

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

13-11-09        来源:[db:作者]  
收藏   我要投稿
  给定程序中,函数fun的功能是:把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。例如,形参s所指的字符串为:abcdefgh,执行结果为:ahcbedgf。 

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

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

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

  给定源程序: 

  #include  

  void fun(char *s) 

  { int i, n, k; char c; 

  n=0; 

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

  if(n%2==0) k=n-___1___ ; 

  else k=n-2; 

  c=___2___ ; 

  for(i=k-2; i>=1; i=i-2) s[i+2]=s[i]; 

  s[1]=___3___ ; 

  } 

  main() 

  { char s[80]="abcdefgh"; 

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

  fun(s); 

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

  }

 解题思路: 

  第一处:首先判断字符串的长度是奇数还是偶数,如果是奇数,则k=n-1,所以应填:1。 

  第二处:取字符串最后一个奇数位的字符,并由变量c保存,所以应填:s[k]。 

  第三处:第1位奇数位用最一个奇数位字符替换,所以应填:c。 

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

  给定程序MODI1.C中 fun 函数的功能是:求 s = aa… aa - ... - aaa - aa - a (此处 aa… aa 表示 n 个 a, a 和 n 的值在 1 至 9 之间) 

  例如 a = 3, n = 6, 则以上表达式为: 

  s = 333333 - 33333 - 3333 - 333 - 33 - 3 

  其值是:296298 a 和 n 是 fun 函数的形参,表达式的值作为函数值传回 main函数。 

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

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

  给定源程序: 

  #include  

  long fun (int a, int n) 

  { int j ; 

  long s = 0, t = 1 ; 

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

  t = t * 10 + a ; 

  s = t ; 

  for ( j = 1 ; j < n ; j++) { 

  t = t % 10 ; 

  s = s - t ; 

  } 

  return(s) ; 

  } 

  main( ) 

  { int a, n ; 

  printf( "nPlease enter a and n:") ; 

  scanf( "%d%d", &a, &n ) ; 

  printf( "The value of function is: %ldn", fun ( a, n ) ); 

  }

  解题思路: 

  第一处:根据for循环计算t的值可知,变量t的初值不正确,应为0。 

  第二处:每次循环都是取t除以10的值,而不是取余数,所以应改t=t/10;。 

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

  请编写一个函数 void fun(char *tt, int pp[]),统计在tt所指字符串中 ’a’ 到 ’z’ 26个小写字母各自出现的次数,并依次放在pp所指数组中。 例如,当输入字符串:abcdefgabcdeabc 后,程序的输出结果应该是: 3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

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

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

  给定源程序: 

  #include  

  #include  

  void fun(char *tt, int pp[]) 

  { 

  } 

  main( ) 

  { char aa[1000] ; 

  int bb[26], k, n ; 

  printf( "nPlease enter a char string:" ) ; scanf("%s", aa) ; 

  fun(aa, bb ) ; 

  for ( k = 0 ; k < 26 ; k++ ) printf ("%d ", bb[k]) ; 

  printf( "n" ) ; 

  NONO ( ) ; 

  } 

  解题思路: 

  本题是考察考生在给定的字符串中统计出26个小写字母的次数并存入到指定的数组中且由形参返回。其中数组下标的位置可以通过某一个字符的ASCII值减去97或直接减’a’也可以,就可以得出该字符出现次数存放的位置。例如:字符为b,那么位置为’b’-’a’=1,就是实际存放的位置。 

  参考答案: 

  void fun(char *tt, int pp[]) 

  { 

  char *p = tt ; 

  int i ; 

  for(i = 0 ; i < 26 ; i++) pp[i] = 0 ; 

  while(*p) { 

  if(*p >= ’a’ && *p <= ’z’) pp[*p - ’a’] += 1 ; 

  p++ ; 

  } 

  } 

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

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

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

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