下列给定程序中,函数fun()的功能是;将s所指字符串中的字母转换为按字母序列的后续字母(但Z转化为A,z转化为 a),其他字符不变。 请改正函数fun()中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include <stdio.h> #include <ctype.h> #include <conio.h> 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]; clrscr(); 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); }
参考答案:错误:while(*s!=’@’) 正确:while(*s)
解析:(2)错误:(*s)++; 正确:s++; 根据题目要求,可对字符串所有字母进行遍历。对每一个字母,若该字母为’z’或’Z’,将该字母改成’a’或’A’,即 ASCII码值减25,当然也可以用题目中的if语句来实现转换。若该字母不是’z’或’Z’,则该字母的ASCII码值加1;对字符串所有字符重复以上过程即可得到题目要求的结果,可用循环语句和条件语句来实现。