改错题 1.  下列给定程序中,函数proc()的功能是:从字符串str中,删除所有小写字母c。
    请修改程序中的错误,使它能得出正确的结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include<stdio.h>
    void proc(char *str)
    {
    int i,j;
    for(i=j=0;str[i]!='\0';i++)
    if(str[i]!='c')
    //****found****
    str[j]=str[i];
    //****found****
    str[i]='\0';
    }
    void main()
    {
    char str[80];
    printf("\nEnter a string:");
    gets(str);
    printf("The original string:");
    puts(str);
    proc(str);
    printf("The string after deleted:");
    puts(str);printf("\n\n");
    }
【正确答案】(1)错误:str[j]=str[i];
   正确:str[j++]=str[i];
   (2)错误:str[i]='\0';
   正确:str[j]='\0';
【答案解析】 按照题目要求删除所有的小写字母“c”,可以将字符串中所有不是小写字母“c”的字符放入字符串str中,形成一个新的字符串,因此,“str[j]=str[i];”应改为“str[j++]=str[i];”。最后,为新的字符串添加结束符,由函数proc()可知,变量j为新的字符串的下标,因此,“str[i]='\0';”应改为“str[j]='\0';”。