填空题 下列给定程序中,函数proc()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(但Z转化为A,Z转化为a),其他字符不变。
请修改函数proc()中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
void proc(char*str)
//****found****
{
while(*str!="@")
{
if(*str>="A"&&*str<="Z"||*str>="a"
&&*str<="z")
{
if(*str=="Z")*str="A";
else if(*str=="z")*str="a";
else*str+=1;
}
//****found****
(*str)++;
}
}
void main()
{
char str[80];
system("CLS");
printf("/n Enter a string with length
<80:/n/n");gets(str);
printf("/n The string:/n/n");puts(str);
proc(str);
printf("/n;n The Cords:/n/n");puts(str);
}
【正确答案】
【答案解析】错误:while(*str!="@")
正确:while(*str)
错误:(*str)++;
正确:str++; [解析] 字符串不结束的标志为*s。因此,“while(*str!="@")”应改为“while(*str)”。每执行完一次循环,指针变量str向后移动一个位置,而不是str指向的内容加1。因此,“(*str)++;”应改为“str++;”。