sjql123 2021-08-31 01:54 采纳率: 100%
浏览 43
已结题

请问为什么这个程序在DVC++上可以正确跑出来,而在gcc上跑不出来

说反话PTA乙级1009

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

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

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

#include<stdio.h>
#include<string.h>
int main()
{
    char word[81];
    int cnt[81] = {-1,0};//定义一个位置,方便求后期单个单词的长度
    int i,k = 0,count = 0;
    scanf("%[^\n]",word);

    for(i = 0;i < 81;i++){
        if(word[i] == ' ')
        {
            count++;
            cnt[count] = i;
            
        }
        if(word[i] == '\0')
        {
            count++;
            cnt[count] = i;
            break;
        }
    }
    int len[count];
    for(i = 0;i < count;i++){
        len[i] = cnt[i + 1] - cnt[i];
    }    

    char string[count - 1][81];//把字符串拆成几个小字符串
    for(i = 0;i < count;i++){
        int j = 0;
        for(j;j < len[i];j++){
            string[i][j] = word[k++];
            if(word[k] == ' ')
            {
                k++;
                string[i][j + 1] = '\0';
                break;
            }
        }
    }
    while(count--)
    {
        printf("%s%c",string[count],count?'\0':' ');
    }
    
    return 0;
}

输出结果:
DVC++:
img
gcc:
img

  • 写回答

1条回答 默认 最新

  • 关注
    scanf("%[^\n]",word);
    

    改成

    gets(word);
    

    printf("%s%c",string[count],count?'\0':' ');
    

    改成

    printf("%s%s",string[count],count?" ":"");
    

    img
    如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮

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

报告相同问题?

问题事件

  • 系统已结题 9月8日
  • 已采纳回答 8月31日
  • 创建了问题 8月31日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器