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

admin2016-10-29  33

问题 给定程序MODI1.C中函数fun的功能是:将S所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,Z转换为a),其他字符不变。
    请改正函数fun中指定部位的错误,使它能得出正确的结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#inolude
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)++;
  }
}
msin()
{  char s[80];
  printf("\n Enter a string with
length<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/ojDp777K
0

最新回复(0)