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

输入格式:

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

输出格式:

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

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello

两种解决办法:

方法一

#include<stdio.h>
char xx[][];
int main(){
int i = ;
while( scanf("%s",xx[i]) != EOF){
i++;
}
for(int j = i - ;j >= ;j--){
if(j != )
printf("%s ",xx[j]);
else
printf("%s",xx[j]);
} return ;
}

不断读取字符串,直到 文件结尾

EOF 详解

遇到这个表达式:scanf("%d%d",&a,&b)!=EOF;

如果a和b都被成功读入,那么上面表达式的结果为2;

如果只有一个读入,那么上面表达式的结果为1;

如果a&&b都没有读入,那么上面表达式的结果为0(若a没有读入,则直接放弃b的读入);

如果遇到错误或者文件结尾,那么上面表达式的结果为EOF,对应的有符号数时-1;

如果遇到Crrl+Z,那么上面表达式的结果为EOF,对应的有符号数时-1;

方法二

由于 scanf()  遇到空白符就会停止输入,截断,而该空白符会被留在缓冲区内,由题目

所以,只需要判断   getchar() 是否等于 '  ' ,来决定是否继续读取字符串。

#include<stdio.h>
char xx[][];
int main(){
int i = ;
scanf("%s",xx[i]);
i++;
while(getchar() == ' '){
scanf("%s",xx[i]);
i++;
}
for(int j = i - ;j >= ;j--){
if(j != )
printf("%s ",xx[j]);
else
printf("%s",xx[j]);
} return ;
}

输入字符串时:

scanf 碰到缓冲区里面的空字符(空格,tab,回车,换行就会截断并添加\0)

gets 是要等回车才截断字符串并添加\0的

比如用输入字符串:abcdefg hijk回车
用scanf的话,会得到abcdefg,而gets则是:abcdefg hijk

scanf  遇到空白符后会结束输入,空白符会留在缓冲区!!!

可以用 scanf("%[^\n]" , str)   输入一行数据包括空格,直到遇到换行符 ' \n '

PTA --- Basic Level 1009 说反话的更多相关文章

  1. 来自PTA Basic Level的三只小野兽

    点我阅读原文 最近利用闲暇时间做了一下 PTA Basic Level[1] 里的题,里面现在一共有 95 道题,这些题大部分很基础,对于刷倦了 leetcode 的小伙伴可以去里面愉快的玩耍哦. 这 ...

  2. PTA(Basic Level)1006.Sign In and Sign Out

    At the beginning of every day, the first person who signs in the computer room will unlock the door, ...

  3. PTA(Basic Level)1020.月饼

    月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样 ...

  4. PTA (Advanced Level) 1009 Product of Polynomials

    1009 Product of Polynomials This time, you are supposed to find A×B where A and B are two polynomial ...

  5. PTA(Basic Level)1057.数零壹

    给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0.多少 1.例如 ...

  6. PTA(Basic Level)-1002 写出这个数

    一 1002 写出这个数  读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 10​10 ...

  7. PTA(Basic Level)-1076 Wifi密码

    一 题目介绍:     现将 wifi 密码设置为下列数学题答案:A-1:B-2:C-3:D-4.本题就要求你写程序把一系列题目的答案按照卷子上给出的对应关系翻译成 wifi 的密码.这里简单假设每道 ...

  8. PTA(Basic Level)1039.到底买不买

    小红想买些珠子做一串自己喜欢的珠串.卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖.于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子 ...

  9. PTA(Basic Level)1033.旧键盘打字

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行中分别给出坏掉的那些键.以及应该输入 ...

随机推荐

  1. Maven编译

    多模块 只有需要编译成jar的模块才设置build <build> <plugins> <plugin> <groupId>org.springfram ...

  2. top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令。 按 q 退出

    top命令经常用来监控linux的系统状况,比如cpu.内存的使用,程序员基本都知道这个命令. 按 q 退出

  3. 深入理解JavaScript执行上下文、函数堆栈、提升的概念

    本文内容主要转载自以下两位作者的文章,如有侵权请联系我删除: https://feclub.cn/post/content/ec_ecs_hosting http://blog.csdn.net/hi ...

  4. MySQL 关于存储过程的操作

    -- 存储过程 --> 一组为了完成特定功能的SQL语句集 -- IN 传入参数 delimiter // create procedure mysql ( IN id int ) begin ...

  5. C++ vector 实例二

    // constructing vectors #include <iostream> #include <vector> int main () { // construct ...

  6. C# 常用方法——base64字符串转图片

    其他常用方法详见:https://www.cnblogs.com/zhuanjiao/p/12060937.html /// <summary> /// base64编码的文本转为图片 / ...

  7. 编译原理--02 自顶向下、自底向上的LR分析复习(清华大学出版社第3版)

    前言 目录 01 文法和语言.词法分析复习 02 自顶向下.自底向上的LR分析复习 03 语法制导翻译和中间代码生成复习 04 符号表.运行时存储组织和代码优化复习 第4章 自顶向下的语法分析方法 确 ...

  8. Java内存缓存-通过Map定制简单缓存

    缓存 在程序中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存储位置快.通过缓存,可以高效地重用之前检索或计算的数据. 为什么要用缓 ...

  9. kentico中page alias的使用

    这里设置的path or pattern,是针对于根目录而言的

  10. python3 格式化输出,字符串操作,模块,列表,元组

    初识python,在网上看了老男孩的视频,建立一个博客将自己所学的python知识记录下来. input加密,用于输入密码的阶段. import getpass user = input(" ...