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

 给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长  请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 

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


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


  给定源程序: 


  #include  


  #include  


  #define M 5 


  #define N 20 


  int fun(char (*ss)[N], int *n) 


  { int i, k=0, len= N; 


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


  { len=strlen(ss[i]); 


  if(i==0) *n=len; 


  if(len ___2___ *n) 


  { *n=len; 


  k=i; 


  } 


  } 


  return(___3___); 


  } 


  main() 


  { char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","chongqing"}; 


  int n,k,i; 


  printf("\nThe original strings are :\n"); 


  for(i=0;i  k=fun(ss,&n); 


  printf("\nThe length of shortest string is : %d\n",n); 


  printf("\nThe shortest string is : %s\n",ss[k]); 


  }



  解题思路: 


  第一处:字符串数组共有M个字符串,所以在循环中终止值应填:M。 


  第二处:由于本题是取长度最短的字符串,*n总是保存长度最短值,所以应填:<。 


  第三处:其中k是保存长度最短的字符串所在的行下标,所以应填:k。 


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


  给定程序MODI1.C中函数 fun 的功能是:将tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。 


  例如,若输入"Ab, cD",则输出"AB, CD"。 


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


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


  给定源程序: 


  #include  


  #include  


  char* fun( char tt[] ) 


  { 


  int i; 


  for( i = 0; tt[i]; i++ ) 


  if(( ’a’ <= tt[i] )||( tt[i] <= ’z’ ) ) 


  tt[i] += 32; 


  return( tt ); 


  } 


  main( ) 


  { 


  char tt[81]; 


  printf( "\nPlease enter a string: " ); 


  gets( tt ); 


  printf( "\nThe result string is:\n%s", fun( tt ) ); 


  } 


  解题思路: 


  第一处:判断是小写字母,则条件应该是与的关系。 


  第二处:小写字母的ASCII值减去32正好是其大写字母。 


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


  请编写函数fun,其功能是: 将所有大于1小于整数m的非素数存入xx所指数组中, 非素数的个数通过k传回。 


  例如,若输入:17,则应输出:4 6 8 9 10 12 14 15 16。 


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


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


  给定源程序: 


  #include  


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


  { 


  } 


  main() 


  { 


  int m, n, zz[100]; 


  printf( "\nPlease enter an integer number between 10 and 100: " ); 


  scanf( "%d", &n ); 


  fun( n, &m, zz ); 


  printf( "\n\nThere are %d non-prime numbers less than %d:", m, n ); 


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


  printf( "\n M", zz[n] ); 


  NONO(); 


  }


  解题思路: 


  本题是考察考生如何判断一个数不是素数,如果所给出的数是非素数且小于指定的数,那么这些数应存放到指定的数组xx中保存,最后由形参xx返回。在给出的程序中函数isP就是判断一个数是否是素数,若是非素数,则返回1,否则返回0。本题是用for(i=2;i  参考答案: 


  #include  


  int isP(int m) 


  { 


  int j, tag = 0 ; 


  for(j = 2 ; j < m && !tag ; j++) 


  if(m % j == 0) tag = 1 ; 


  return tag ; 


  } 


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


  { 


  int i, cnt = 0 ; 


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


  if(isP(i)) xx[cnt++] = i ; 


  *k = cnt ; 


  } 


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

就业数据资源平台