改错题
下列给定程序中,函数proc()的功能是:从字符串str中,删除所有大写字母'F'。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
void proc(char*str)
{
int i, j;
//****found****
for(i=j=0; str[i]!='0'; i++)
if(str[i]!='F')
//****found****
str[j]=str[i];
str[j]='\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)错误:for(i=j=0; str[i]!='0'; i++) 正确:for(i=j=0; str[i]!='\0'; i++) (2)错误:str[j]=str[i]; 正确:str[j++]=str[i];
【答案解析】根据题目中的要求,从字符串str中删除所有大写字母'F',需要检查字符串str中的每一个字符,直到字符串结束,因此,“for(i=j=0; str[i]!='0'; i++)”应改为“for(i=j=0; str[i]!='\0'; i++)”;将每一个不是'F'的字符放入原来的字符串中,形成新的字符串,因此,“str[j]=str[i];”应改为“str[j++]=str[i];”。