静如死水 2022-10-19 20:31 采纳率: 0%
浏览 253

PTA C语言 7-17 说反话加强版

问题遇到的现象和发生背景

PTA C语言 7-17 说反话加强版

用代码块功能插入代码,请勿粘贴截图

#include <stdio.h>
#include <string.h>
int main()
{
char str[500001]; char p[1000][500];
int i,m,j,n,t,len;
m=0;n=0;t=0;
gets(str);
len=strlen(str);
for(i=0;i<len;i++)
{
while(str[i]!=' '&&str[i]!='\0')
{i++;}
for(j=n;j<i;j++)
{ p[m][t]=str[j];
t++;
}
p[m][t]=0;
m++;t=0;
while(str[i]==' ')
{i++;}
n=i;
}
for(i=1;p[m][i]!=0;i++)
printf("%c",p[m][i]);
for(int k=m-1;k>0;k--)
{ printf("%s ",p[k]);
}
printf("%s",p[0]);
return 0;
}

运行结果及报错内容

样例都是没有问题的,但是结果提交的时候总是会出现格式错误

我的解答思路和尝试过的方法

以为是最后的换行问题,但是修改之后没有效果

我想要达到的结果

希望可以帮我看看错在哪里吗

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-10-20 14:15
    关注

    修改处见注释,供参考:

    #include <stdio.h>
    #include <string.h>
    int main()
    {
        char str[500001]; char p[1000][500];
        int i, m, j, n, t, len;
        m = 0; n = 0; t = 0;
        gets_s(str);
        len = strlen(str);
        for (i = 0; i < len; ) //i++) 修改
        {
            while (str[i] != ' ' && str[i] != '\0')
            {
                i++;
            }
            if (i > 0) {     // 修改
                for (j = n; j < i; j++)
                {
                    p[m][t] = str[j];
                    t++;
                }
                p[m][t] = 0;
                m++; t = 0;
            }
            while (str[i] == ' ')
            {
                i++;
            }
            n = i;
        }
        //for (i = 1; p[m][i] != 0; i++) 修改
        //    printf("%c", p[m][i]);
        for (int k = m - 1; k > 0; k--)
        {
            printf("%s ", p[k]);
        }
        printf("%s", p[0]);
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月19日