ACM简单题一枚:题目描述:输入一个字符串,长度小于等于200,然后将数组逆置输出 15
intmain(){chara[200],s[200];inti,t,len;while(scanf("%s",s)!=EOF){len=strlen(s);for(i=...
int main()
{
char a[200],s[200];
int i,t,len;
while(scanf("%s",s)!=EOF)
{
len=strlen(s);
for(i=0;i<len;i++)
{
t=len-1-i;
a[t]=s[i];
}
for(i=0;i<len;i++) printf("%c",a[i]);
printf("\n");
}
return 0;
}
//上面这是正确的,但是如果换成while(gets( s)) 本来电脑上运行可以,一提交就说runtimeRuntime Error呢 展开
{
char a[200],s[200];
int i,t,len;
while(scanf("%s",s)!=EOF)
{
len=strlen(s);
for(i=0;i<len;i++)
{
t=len-1-i;
a[t]=s[i];
}
for(i=0;i<len;i++) printf("%c",a[i]);
printf("\n");
}
return 0;
}
//上面这是正确的,但是如果换成while(gets( s)) 本来电脑上运行可以,一提交就说runtimeRuntime Error呢 展开
推荐于2017-12-16
展开全部
长度小于等于200,char a[201],s[201];
gets(s)函数与scanf("%s:",&s)/* scanf("%s",s)*/相似,但不完全相同,使用scanf("%s",&s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
gets(s)读入成功,返回与参数s相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。
你这里返回值为地址,你却用来与一个字符常量进行比较,犯了大错误。
gets(s)函数与scanf("%s:",&s)/* scanf("%s",s)*/相似,但不完全相同,使用scanf("%s",&s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
gets(s)读入成功,返回与参数s相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。
你这里返回值为地址,你却用来与一个字符常量进行比较,犯了大错误。
追问
非常感谢您,你写的第一段我明白了。第二段里面请问gets(s)返回值是地址啊,可是“用来与一个字符常量进行比较,犯了大错误。”是什么意思呢,您能详细说明一下么。还有如果用gets()的话,该怎么样改才正确呢?希望您指教,我会加分的。
追答
你没有进行比较,是我看错了,对不起。用gets(s)没有什么错误。不过你这个算法很浪费时间和空间,你可以进一步改进。
展开全部
#include<stdio.h>
#include<string.h>
int main()
{
char a[210],s[210];//数组要开大一些的,不然会溢出,因为输入200个字符的话其实最后有一个字符'\0'的
int i,t,len;
while(scanf("%s",s)!=EOF)
{
len=strlen(s);
for(i=0;i<len;i++)
{
t=len-1-i;
a[t]=s[i];
}
for(i=0;i<len;i++) printf("%c",a[i]);
printf("\n");
}
return 0;
}
#include<string.h>
int main()
{
char a[210],s[210];//数组要开大一些的,不然会溢出,因为输入200个字符的话其实最后有一个字符'\0'的
int i,t,len;
while(scanf("%s",s)!=EOF)
{
len=strlen(s);
for(i=0;i<len;i++)
{
t=len-1-i;
a[t]=s[i];
}
for(i=0;i<len;i++) printf("%c",a[i]);
printf("\n");
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int main()
{
char a[200],s[200];
int i,t=0,d;
while(scanf("%c",d)!=EOF)
{
s[t++]=d;
}
for(i=0;t>0;i--,t++)
{
a[t-1]=s[i];
}
printf("%s",a);
printf("\n");
}
return 0;
}
scanf能不能有返回值我不知道。
大概是对的。
{
char a[200],s[200];
int i,t=0,d;
while(scanf("%c",d)!=EOF)
{
s[t++]=d;
}
for(i=0;t>0;i--,t++)
{
a[t-1]=s[i];
}
printf("%s",a);
printf("\n");
}
return 0;
}
scanf能不能有返回值我不知道。
大概是对的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的意思是把while(scanf("%s",s)!=EOF)改成while(gets( s)) 么?
没有错啊,俩个功能是完全一样的,我刚刚调试过了
没有错啊,俩个功能是完全一样的,我刚刚调试过了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while(scanf("%s",s)!=EOF)
是来判断输入结束
如果换了 是否还能正确表示在那结束呢?
是来判断输入结束
如果换了 是否还能正确表示在那结束呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询