给定程序MODll.C中函数fun的功能是:将S所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,Z转换为a),其他字符不变。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,

admin2020-04-18  24

问题 给定程序MODll.C中函数fun的功能是:将S所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,Z转换为a),其他字符不变。
    请改正函数fun中指定部位的错误,使它能得出正确的结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
VOid fun(char *s)
{
/**********found***********/
  while(*s!=‘@’)
  {  if(*s>=‘A’&&*s<=‘Z’  ||*s>=‘a’
&&  *s<=‘z’)
    {    if(*s==‘Z’)  *s=‘A’;
    else  if(*s==‘z’)  *s=‘a’,
    else  *s  += 1;
    }
/**********found***********/
    (*s)++,
  }
}
main()
{  char s[80];
  printf(“\n Enter a string with
lencjth<80.:\n\n”);gets(s);
  printf(“\n The string:\n\n”);
puts(s);
  fun(s);
  printf(“\n\n The Cords:\n\n”);
puts(s);
}

选项

答案(1)while(*s) 或while(*s!=‘\0’) 或while (*s!=0) (2)s++;

解析  函数的功能是将字符串中的字母改为该字母序列的后续字母。
    (1)第一个错误标识下的“while(*s!=‘@’)”语句原意是s不指向字符串尾就进入下而的循环,所以对于指针判断不为尾符的语句应该是“while(*s)”或者“while(*s!=‘\0’)”或者“while(*s!=0)”。
    (2)第二个标识下“(*s)++;”是对字符内容加1,而原题是对字符位置加1,所以将其改为“s++;”。
转载请注明原文地址:https://kaotiyun.com/show/FjCp777K
0

最新回复(0)