改错题 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++;”。