改错题下列给定程序中,函数fun()的功能是:依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include void fun(char *s){ int i,j; for(i=0,j=0; s[i]!= ’’\0’’; i++)/**********************found***********************/ if((s[i]>= ’’A’’&&s[i]<= ’’Z’’)&&(s[i]>= ’’a’’&&s[i]<= ’’z’’))s[j++]=s[i];/**********************found***********************/ s[j]= "\0";}main(){ char item[80]; clrscr(); printf("\nEnter a string: "); gets(item); printf("\n\nThe string is:\%s\n",item); fun(item); printf("\n\nThe string of changing is :\%s\n",item);}
参考答案:(1)错误:if((s[i]>= ’A’&&s[i]<= ’Z’)&&(s[i]>= ’a’&&s[i]<= ’z’)) 正确:if((s[i]>= ’A’&&s[i]<= ’Z’)||(s[i]>= ’a’&&s[i]<= ’z’))(2)错误:s[j]= "\0";正确:s[j]=’\0’;
解析:错误1:字母包括小写字母和大写字母,这里是"或"的关系,所以用"||"运算符。错误2:字符串的结束标志符为字符,而不是字符串。