int main()
{
char a[1000],s[1000];
int i,j,l,e=0,g=0,b,temp;
gets(a);
l=strlen(a);
for(i=0;i<=l;i++)
{
if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z')
{
s[e]=a[i];
e++;
}
else
{
s[e]='\0';
j=strlen(s);
for(b=0;b<j/2;b++)
{
temp=s[b];
s[b]=s[j-b-1];
s[j-b-1]=temp;
}
if(e!=0)
{
printf("%s",s);
printf("%c",a[i]);
}
e=0;
}
}
return 0;
}
如果 a 只有一个单词呢?没有空格呢?
我这个是遇到不是字母的字符 就把这个字符当成截止标志,所以就算没有空格,字符串的最后的那个‘、0’也能作为截至标志,输出也是对的
@打着玩: 我没注意到你的 <=
我看了原题,应该是你输出格式的问题
你这样是有问题的,题目要求你单词之间输出和题目一样的空格,你输出的是'\0'。而且你最后一个单词后面会跟着空格,格式错误 PE
@Shendu.CC: 我现在改了下 但是给了零分 但我把那个输出啊a【i】取消了,他就是输出格式错误;
@打着玩: 题目没有说单词是由字母组成,严格来说除空格,'\0'之外的字符都属于单词的组成。
你再改一下。这个题目本来出的就不好。
@打着玩:
#include <stdio.h>
#include <string.h>
int main()
{
char a[1000],s[1000];
int i,j,l,e=0,g=0,b,temp;
gets(a);
l=strlen(a);
for(i=0;i<=l;i++)
{
if(a[i]!=' '&&a[i]!='\0')
{
s[e]=a[i];
e++;
}
else
{
s[e]='\0';
j=strlen(s);
for(b=0;b<j/2;b++)
{
temp=s[b];
s[b]=s[j-b-1];
s[j-b-1]=temp;
}
printf("%s ",s);
e=0;
}
}
return 0;
}
@Shendu.CC: 谢谢 我自己看看那不一样
@Shendu.CC: 怎么把悬赏分给您?
@Shendu.CC: 哦哦 我知道了 这个单词可以不只是字母 万分感谢 已关注 谢谢大佬
请把代码放到代码块中。
– Shendu.CC 6年前@Shendu.CC: 怎么放? 我是新手 哈哈
– 打着玩 6年前@打着玩: 看下MarkDown语法
– Shendu.CC 6年前