当前位置:首页 > 通信资讯 > 正文

pta编程题答案C语言(用c语言倒序输出)

目录

    pta编程题答案C语言(用c语言倒序输出)

    这道题,是我遇见对数组元素的掌握与使用较为灵活的题目。
    下面代码是我刚接触C++,刚学完类的一系列知识,连入门都没过,对C++的强大还未有多大认知,还是极具C语言的风格。

    我看过一篇用C++完成的比这个简单多了。

    C语言也可以用栈来完成,虽然我有栈的实现函数,但我不愿去搞,就这样吧,实现也是对自己知识点掌握的加深认知。

    ?
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #include <iostream> #include <cstring> int main(void) { int a = 0; char ch; char arr1[500001];//输入数组 char arr2[500001];//输出数组 while ((ch = getchar()) != '\n')//读入字符串 { arr1[a++] = ch; } arr1[a] = '\0'; int len = strlen(arr1); int i = 0; int dest = len - 1;//从字符串尾部开始遍历 while (dest >= 0) { if (arr1[dest] == ' ' && arr1[dest + 1] != ' ' && arr1[dest + 1] != '\0' || (dest == 0 && arr1[0] != ' '))//元素为单词的条件 { if (i != 0) arr2[i++] = ' '; int last = dest + 1; if (dest == 0 && arr1[0] != ' ')//满足条件,改变last的值 { last = dest; } while (arr1[last] != ' ' && arr1[last] != '\0')//将单词拷贝到输出数组中 { arr2[i++] = arr1[last++]; } } dest--; } arr2[i] = '\0';//字符串结束 std::cout << arr2 << std::endl; return 0; }

    尽量理解吧

    ?
    1 arr1[dest] == ' ' && arr1[dest + 1] != ' '&&arr1[dest+1]!='\0'

    是为了确定每个单词出现的条件。

    ?
    1 (dest == 0 && arr1[0] != ' ')

    是为了处理第一个元素就是单词的情况。

    ?
    1 2 3 4 while (arr1[last] != ' ' && arr1[last] != '\0') { arr2[i++] = arr1[last++]; }

    负责将单词拷贝到输出数组上,同时符号要求。

    ?
    1 2 if(i!=0) arr2[i++] = ' ';

    这个是,当第一个单词拷贝过去后,判断是否后面还有有单词,且能进这个域,就代表后面还有单词,要加一个空格的元素。

    以上就是PTA刷题C语言编程顺序颠倒输出实现的详细内容,更多关于PTA刷题C语言倒序的资料请关注服务器之家其它相关文章!

    原文链接:https://blog.csdn.net/weixin_52199109/article/details/117376116

    如果您对该产品感兴趣,请填写办理(客服微信:xiaoxiongyidong)

    为您推荐:

    发表评论

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。