Dome212 2022-12-21 11:16 采纳率: 100%
浏览 19
已结题

初学者pat乙级题,遇到问题了

初学者,写PAT网站上面的题目遇到的问题,题目如下,结果有的时候鬼畜,不知道是哪里出现了问题,球丘

题目:
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

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

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

Hello World Here I Come

输出样例

Come I Here World Hello

我的错误输出

Come I Heree World Hello

我的有问题的代码:


#include <stdio.h>
int main()
{
    char the,lines[20][20],gtx[84];
    int n=0,m=0,i=0;
    gets(gtx);//输入一段话,准备一个字一个字分析


    while(gtx[i]!='\0')
    {
        if((gtx[i]>='A' && gtx[i]<='Z')||(gtx[i]>='a' && gtx[i]<='z'))
        {while((gtx[i]>='A'&&gtx[i]<='Z')||(gtx[i]>='a'&&gtx[i]<='z'))
        {
            lines[n][m]=gtx[i];
            m++;
            i++;
        }
        }//如果是英文字符,就收入一个数组中

        else if(gtx[i]==' ')
        {
            lines[n][m+1]='\0';
            n++;
            m=0;
            i++;

        }//如果是空格,就结束这个数组的输入,跳转到下一个数组

    }
    for(int k=n;k>=0;k--)
    {
        if(k>0)
        printf("%s ",lines[k]);
        else if(k==0)
            printf("%s",lines[k]);
    }//按照倒序输出单词组


}
我的错误输出,很鬼畜,还会有很多乱码

举例子
输入

love the world

ew ew

输出

world the love2

ewl ew4

球邱,哪里出的事啊

  • 写回答

1条回答 默认 最新

  • 於黾 2022-12-21 11:47
    关注

    你在执行lines[n][m]=gtx[i];之后,已经m++了,此时m已经指向了字符串的结尾,所以你应该lines[n][m]='\0';,而不是lines[n][m+1]='\0';
    如果之前恰好m的位置本来就是0,那就正常输出,而如果恰好哪里是个随机数,你就多输出了个乱码

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 已采纳回答 12月22日
  • 修改了问题 12月21日
  • 修改了问题 12月21日
  • 展开全部

悬赏问题

  • ¥15 在rhel8中安装qemu-kvm时遇到“cannot initialize crypto:unable to initialize gcrypt“报错”
  • ¥15 arbotix没有/cmd_vel话题
  • ¥15 paddle库安装时报错提示需要安装common、dual等库,安装了上面的库以后还是显示报错未安装,要怎么办呀?
  • ¥20 找能定制Python脚本的
  • ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
  • ¥15 用C语言怎么判断字符串的输入是否符合设定?
  • ¥15 通信专业本科生论文选这两个哪个方向好研究呀
  • ¥50 我在一个购物网站的排队系统排队,这个排队到号后重新定向到目标网站进行购物,但是有技术牛通过技术方法直接跳过排队系统进入目标网址购物,有没有什么软件或者脚本可以用
  • ¥15 ios可以实现ymodem-1k协议 1024字节传输吗?
  • ¥300 寻抓云闪付tn组成网页付款链接