改错题
1. 下列给定程序中,函数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);
}
【正确答案】(1)错误:while(*str!='@')
正确:while(*str)
(2)错误:(*str)++;
正确:str++;
【答案解析】 字符串不结束的标志为*s,因此,“while(*str!='@')”应改为“while(*str)”。每执行完一次循环,指针变量str向后移动一个位置,而不是str指向的内容加1,因此,“(*str)++;”应改为“str++;”。