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

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

13-11-09        来源:[db:作者]  
收藏   我要投稿
 给定程序中,函数fun的功能是:判断形参s所指字符串是否是"回文" (Palindrome),若是,函数返回值为1;不是,函数返回值为0。"回文" 是正读和反读都一样的字符串(不区分大小写字母)。 

  例如,LEVEL和Level是"回文",而LEVLEV不是"回文"。 

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

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

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

  给定源程序: 

  #include  

  #include  

  #include  

  int fun(char *s) 

  { char *lp,*rp; 

  lp= __1__ ; 

  rp=s+strlen(s)-1; 

  while((toupper(*lp)==toupper(*rp)) && (lp  lp++; rp __2__ ; } 

  if(lp  else return 1; 

  } 

  main() 

  { char s[81]; 

  printf("Enter a string: "); scanf("%s",s); 

  if(fun(s)) printf("n"%s" is a Palindrome.nn",s); 

  else printf("n"%s" isn’t a Palindrome.nn",s); 

  }

 解题思路: 

  本题是判断字符串是否是“回文”。 

  第一处:根据函数体fun中,对变量lp的使用可知,lp应指向形参s,所以应填:s。 

  第二处:rp是指向字符串的尾指针,当每做一次循环rp指向就要指向前一个字符,所以应填:--。 

  第三处:当lp和rp相等时,则表示字符串是回文并返回1,否则就返回0,所以应填:return 0。 

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

  给定程序MODI1.C中fun函数的功能是:求出以下分数序列的前n项之和。 

  2 3 5 8 13 21 ┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , …… 1 2 3 5 8 13 和值通过函数值返回main函数。 

  例如,若 n = 5,则应输出: 8.391667。 

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

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

  给定源程序: 

  #include  

  fun (int n ) 

  { int a = 2, b = 1, c, k ; 

  double s=0.0 ; 

  for ( k = 1; k <= n; k++ ) 

  { s = s + 1.0 * a / b ; 

  c = a; a += b; b += c; 

  } 

  return(s) ; 

  } 

  main( ) 

  { int n = 5 ; 

  printf( "nThe value of function is: %lfn", fun ( n ) ) ; 

  }

 解题思路: 

  第一处:由于计算的实型值要通过函数返回,所以必须定义函数的返回类型,只要int或void可以省略,其他都要定义类型。由于返回是实型值,所以应在数名前加上double或float等定义。 

  第二处:根据公式可知,在for循环内b的值应是c。 

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

  请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17, 5,则应输出:19, 23, 29, 31, 37。函数fun中给出的语句仅供参考。 

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

  请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入 

  你编写的若干语句。 

  给定源程序: 

  #include  

  void fun(int m, int k, int xx[]) 

  { 

  int i, j=1, t=m+1; 

  while(j<=k) 

  { 

  /* 以下完成判断素数,并存放到数组xx中 */ 

  } 

  } 

  main() 

  { 

  int m, n, zz[1000] ; 

  printf( "nPlease enter two integers:") ; 

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

  fun( m, n, zz) ; 

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

  printf("%d ", zz[m]) ; 

  printf("n") ; 

  NONO( ) ; 

  }

  解题思路: 

  本题是考察考生如何判断一个数是素数,再判断所求出的素数是否符合题义要求,如果符合,则存入指定的数组xx中保存,最后由形参xx返回。本题是用while循环语句分别求出5个符合题义的素数。其中,j是控制变量,m是所求素数要大于这个数且还要紧靠这个数,k是所求素数的个数,j是当前所求第几个素数。其中while 循环体中的for循环语句是判断t是否是素数。 

  参考答案: 

  void fun(int m, int k, int xx[]) 

  { 

  int i, j=1, t=m+1; 

  while(j<=k) 

  { 

  /* 以下完成判断素数,并存放到数组xx中 */ 

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

  if(t % i==0) break; 

  if(i==t) { 

  xx[j-1] = i; 

  j++; 

  } 

  t++; 

  } 

  } 

  } 

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

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

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

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