首页 新闻 搜索 专区 学院

openjudge 上的一道简单题 27:单词翻转 自己实在找不出错误了 求大神指导,只给了六分,还有什么没考虑到的吗?

0
悬赏园豆:30 [已解决问题] 解决于 2018-11-30 11:47

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'&&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;
}

打着玩的主页 打着玩 | 初学一级 | 园豆:132
提问于:2018-11-29 12:36

请把代码放到代码块中。

Shendu.CC 1年前

@Shendu.CC: 怎么放? 我是新手 哈哈

打着玩 1年前

@打着玩: 看下MarkDown语法

Shendu.CC 1年前
< >
分享
最佳答案
1

如果 a 只有一个单词呢?没有空格呢?

收获园豆:30
Shendu.CC | 小虾三级 |园豆:1914 | 2018-11-29 15:42

我这个是遇到不是字母的字符 就把这个字符当成截止标志,所以就算没有空格,字符串的最后的那个‘、0’也能作为截至标志,输出也是对的

打着玩 | 园豆:132 (初学一级) | 2018-11-29 21:55

@打着玩: 我没注意到你的 <=

我看了原题,应该是你输出格式的问题
你这样是有问题的,题目要求你单词之间输出和题目一样的空格,你输出的是'\0'。而且你最后一个单词后面会跟着空格,格式错误 PE

Shendu.CC | 园豆:1914 (小虾三级) | 2018-11-29 22:57

@Shendu.CC: 我现在改了下 但是给了零分 但我把那个输出啊a【i】取消了,他就是输出格式错误;

打着玩 | 园豆:132 (初学一级) | 2018-11-29 23:42

@打着玩: 题目没有说单词是由字母组成,严格来说除空格,'\0'之外的字符都属于单词的组成。
你再改一下。这个题目本来出的就不好。

Shendu.CC | 园豆:1914 (小虾三级) | 2018-11-30 00:44

@打着玩:


#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 | 园豆:1914 (小虾三级) | 2018-11-30 11:32

@Shendu.CC: 谢谢 我自己看看那不一样

打着玩 | 园豆:132 (初学一级) | 2018-11-30 11:46

@Shendu.CC: 怎么把悬赏分给您?

打着玩 | 园豆:132 (初学一级) | 2018-11-30 11:47

@Shendu.CC: 哦哦 我知道了 这个单词可以不只是字母 万分感谢 已关注 谢谢大佬

打着玩 | 园豆:132 (初学一级) | 2018-11-30 11:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册