帮我看看哪里出错了??

妖妖成仙 2018-04-13 11:38:38
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

输出格式:每个测试用例的输出占一行,输出倒序后的句子。

输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello

这是题目

#include <stdio.h>
#include <string.h>
#define SIZE 80
char *s_gets(char *str,unsigned short n);

int main(void){
char a[SIZE];
short i,j,k;

s_gets(a,SIZE);
i=strlen(a)-1;
while(i){
k=i;
while(a[i]!=' ' && i>=0){
i--;
}
for(j=i+1;j<=k;j++)
putchar(a[j]);
i--;
}

return 0;
}

char *s_gets(char *str,unsigned short n){
char *p;
unsigned short i=0;

p=fgets(str,SIZE,stdin);
if(p){
while(p[i]!='\n' && p[i]!='\0')
i++;
if(p[i]=='\n')
p[i]='\0';
else
while(getchar()!='\n')
continue;
}

return p;
}


...全文
798 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
妖妖成仙 2018-04-13
  • 打赏
  • 举报
回复
引用 1 楼 qq_30918465 的回复:
输出需要在单词之间加空格吧
我的意思是为啥会报错
妖妖成仙 2018-04-13
  • 打赏
  • 举报
回复
引用 2 楼 qq_30918465 的回复:
while(i)也错了,这样最后一次i=-2
对啊,i=-2这样i就不用进行了啊
永远的追梦人 2018-04-13
  • 打赏
  • 举报
回复
while(i)也错了,这样最后一次i=-2
永远的追梦人 2018-04-13
  • 打赏
  • 举报
回复
输出需要在单词之间加空格吧
永远的追梦人 2018-04-13
  • 打赏
  • 举报
回复
引用 3 楼 妖妖成仙的回复:
[quote=引用 2 楼 qq_30918465 的回复:] while(i)也错了,这样最后一次i=-2
对啊,i=-2这样i就不用进行了啊[/quote] 印象中好像只有0才为false
自信男孩 2018-04-13
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>

#define SIZE 80

char *s_gets(char *str,unsigned short n);

int main(void)
{
    char a[SIZE];
    short i,j,k;

    s_gets(a,SIZE);
    puts(a);
    i = strlen(a)-1;
    while (i >= 0){
        k = i;
        while(a[i] != ' ' && i >= 0){
            i--;
        }
        for(j = i+1; j <= k; j++)
            putchar(a[j]);
        putchar(' ');
        i--;
    }

    return 0;
}

char *s_gets(char *str,unsigned short n)
{
    char *p;
    unsigned short i=0;

    p = fgets(str,SIZE,stdin);
    if(p) {
        while(p[i] != '\n' && p[i]!='\0')
            i++;
        if(p[i] == '\n')
            p[i]='\0';
        else
            while(getchar()!='\n')
                continue;
    }

    return p;
}
参考一洗吧 导致程序异常的原因是数组越界。当最后一个单词时,i = -1;然后再进行i--,即i = -2;由于是while(i);也是满足循环的,因此就导致越界。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧