就业数据资源平台
当前位置:首页 > C语言程序设计
计算机等级考试二级c语言上机试题及答案19

 填空题
  给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。ss所指字符串数组中共有M个字符串,且串长<N。
  请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  注意:源程序存放在考生文件夹下的BLANK1.C中。
  不得增行或删行,也不得更改程序的结构!
  给定源程序:
  #include <stdio.h>
  #include <string.h>
  #define M 5
  #define N 20
  void fun(char (*ss)[N])
  { int i, j, n, len=0;
  for(i=0; i<M; i++)
  { len=strlen(ss[i]);
  if(i==0) n=len;
  if(len>n)n=len;
  }
  for(i=0; i<M; i++) {
  n=strlen(___1___);
  for(j=0; j<len-n; j++)
  ss[i][ ___2___]='*';
  ss[i][n+j+ ___3___]='\0';
  }
  }
  main()
  { char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};
  int i;
  printf("The original strings are :\n");
  for(i=0; i<M; i++) printf("%s\n",ss[i]);
  printf("\n");
  fun(ss);
  printf("The result is :\n");
  for(i=0; i<M; i++) printf("%s\n",ss[i]);
  }
  解题思路:
  第一处:利用for循环语句取当前字符串的长度,所以应填:ss[i]。
  第二处:在字符串的右边填字符*,其开始位置是n+j,其中n是该字符串本身的长度,j是
  循环控制变量,所以应填:n+j。
  第三处:字符串处理结束应置字符串结束符,其位置是n+j+1,所以应填:1。
  改错题
  给定程序MODI1.C中 fun 函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。
  例如, 若输入
  "I am a student to take the examination.",
  则应输出 "I aM A studenT tO takE thE examination."。
  请修改程序中的错误之处, 使它能得出正确的结果。
  注意: 不要改动 main 函数, 不得删行, 也不得更改程序的结构!
  给定源程序:
  #include <ctype.h>
  #include <stdio.h>
  void fun( char *p )
  {
  int k = 0;
  for( ; *p; p++ )
  if( k )
  {
  if( p == ' ' )
  {
  k = 0;
  * (p-1) = toupper( *( p - 1 ) )
  }
  }
  else
  k = 1;
  }
  main()
  {
  char chrstr[64];
  int d ;
  printf( "\nPlease enter an English sentence within 63 letters: ");
  gets(chrstr);
  d=strlen(chrstr) ;
  chrstr[d] = ' ' ;
  chrstr[d+1] = 0 ;
  printf("\n\nBefore changing:\n %s", chrstr);
  fun(chrstr);
  printf("\nAfter changing:\n %s", chrstr);
  }
  解题思路:
  第一处:关键字int错写成INT。
  第二处:该行括号没有配对,所以只要加上一个右括号即可。

  编程题
  请编写函数fun, 对长度为7个字符的字符串, 除首、尾字符外,将其余5个字符按ASCII码降序排列。
  例如,原来的字符串为 CEAedca,排序后输出为 CedcEAa 。
  注意: 部分源程序在文件PROG1.C中。
  请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。
  给定源程序:
  #include <stdio.h>
  #include <ctype.h>
  #include <string.h>
  int fun(char *s,int num)
  {
  }
  main()
  {  www.Examda.CoM
  char s[10];
  printf("输入7个字符的字符串:");
  gets(s);
  fun(s,7);
  printf("\n%s",s);
  NONO();
  }
  解题思路:
  本题是考察考生如何对字符串中的字符按降序进行排序。给出的程序是使用双重for循环以及冒泡法进行排序的,结果仍存放在原先的字符串上。
  参考答案:
  int fun(char *s,int num)
  {
  char ch ;
  int i, j ;
  for(i = 1 ; i < 6 ; i++)
  for(j = i + 1 ; j < 6 ; j++) {
  if(*(s + i) < *(s + j)) {
  ch = *(s + j) ;
  *(s + j) = *(s +i) ;
  *(s + i) = ch ;
  }
  }
   }

就业数据资源平台