2013年计算机二级C语言上机题库三十五_第2页

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2013年5月13日
  改错题
  下列给定程序中,函数fun的功能是:将p所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指由空格隔开的字符串)。例如,若输入:
  I am a student to take the examination.
  则应输出: I aM A studenT tO takE thE examinatioN.
  请改正程序中的错误,使其能得出正确结果。
  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
  试题程序:
  #include <string.h>
  #include <ctype.h>
  #include <stdio.h>
  void fun(char *p)
  {
  int k = 0;
  for (; *p; p++)
  /********found********/
  if (k)
  {
  if (p == ' ')
  {
  k = 0;
  /********found********/
  *p = 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+1] = ' ';
  chrstr[d+1] = 0;
  printf("\n\nBefor changing: %s", chrstr);
  fun(chrstr);
  printf("\nAfter changing:\n %s", chrstr);
  }
  第1处:if (p==’ ’)应改为if(*p==’ ’)
  第2处:*p=toupper(*(p-1));应改为*(p-1)=toupper(*(p-1));

相关文章