下列给定程序中 函数fun()的功能是:依次取出字符串中所有的字母 形成新的字符串 并取代原
问题详情
下列给定程序中,函数fun()的功能是:依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
include<stdio.h>
include<conio.h>
void fun(char*S)
{
int i,j;
for(i=0,j=0;s[i]! ="";i++)
/*************found************/
if((s[i]>="A"&&s[i]<="Z")&&(s[i]>= "a"&&S[i]<="z",))
s[j++]=s[i];
/*************found*************/
s[j]=“”;
}
main()
{
char item[80];
clrscr();
printf(“nEnter a string:”);
gets(item);
printf(“nnThe string is:%Sn",item);
fun (item);
printf("nnThe string of changing
is:%Sn",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)错误: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:字符串的结束标志符为字符,而不是字符串。