[C++]PAT乙级1009. 说反话 (17/20)
/*
1009. 说反话 (20) 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 输入格式:
测试输入包含一个测试用例,
在一行内给出总长度不超过80的字符串。
字符串由若干单词和若干空格组成,
其中单词是由英文字母(大小写有区分)组成的字符串,
单词之间用1个空格分开,
输入保证句子末尾没有多余的空格。 输出格式:
每个测试用例的输出占一行,输出倒序后的句子。 输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
*/ /*
思路1:
0.创建单词临时缓冲区buffer[80],单词数组words[40][80],并初始化,单词计数器words_count=0;
1.输入字符串str;
2.遍历字符串str内字符元素str[i]
若str[i] != ' ': strcat(buffer, str[i]);
否则:strcpy(words[words_count++],buffer), tmp清空; 思路2:
对单词的位置标记下来,然后字符串逆序输出。(注意:对连续空格的位置要处理) 分析:
单词数[0, 40];
*/
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std; struct Words{
int wds_start;
int wds_len=0;
}; void print(char *chs, int start,int len){
for(int i=start,length = start+len;i<length;i++){
printf("%c", chs[i]);
}
}
// 1 6/7 10/11/12/13/14
// I am home.
int main(){
char str[80];
Words wds[80];//从下标1开始,sps[0]作为字符串第一个空格点
int words_count=0;//从下标1开始 //init
str[0] = '\0'; //input data
cin.getline(str, 80, '\n');//读取一行字符串,以'\n'作为结束标识符,最多读取80个字符 //printf("string's length:%d\n", strlen(str));//test for(int i=0;i<strlen(str);i++){
if(str[i] == ' '){//空格不处理 } else {//非空格
if(str[i-1] == ' ' || (i==0)){//单词开始,注意:需要对wds[0]位特殊考虑
// printf("[%d] char:%c\n", i, str[i]);//test
words_count++;
wds[words_count].wds_start = i;
}
wds[words_count].wds_len++;
}
} // test
// for(int i=1;i<=words_count;i++){
// printf("words(%d):{start:%d;len:%d}\n", i, wds[i].wds_start, wds[i].wds_len);
// } for(int i=words_count;i>0;i--){
print(str, wds[i].wds_start,wds[i].wds_len);
printf("%s", i==1?"":" ");//最后一个单词不需要空格
}
//printf("*");
return 0;
} /*
参考:https://www.jianshu.com/p/ea251483355c
//C/C++实现 20/20
//思路:从后到前,依次遍历,当找到单词首字符的前的第一个空格时,输出其后的单词,同时将输出的字符以str[i]='\0'截断
#include <stdio.h>
#include <iostream>
#include <string.h> using namespace std; int main(){
char c[82];
gets(c+1);
c[0] = ' ';
for(int i=strlen(c);i>=0;i--){
if(c[i] == ' '){
printf("%s", c+i+1);
c[i] = '\0';
if(i == 0){
printf("%c", '\n');
}
else{
printf("%c", ' ');
}
}
else{
continue;
}
}
return 0;
}
*/
[C++]PAT乙级1009. 说反话 (17/20)的更多相关文章
- PAT乙级 1009. 说反话 (20)
1009. 说反话 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一句英语,要求你编写程序,将句中 ...
- PAT 乙级 1009 说反话 (20) C++版
1009. 说反话 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一句英语,要求你编写程序,将句中 ...
- PAT 乙级 1009.说反话 C++/Java
1009 说反话 (20 分) 题目来源 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由若干单词 ...
- PAT 乙级 -- 1009 -- 说反话
题目简述 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是 ...
- PAT乙级1009
1009 说反话 (20 分) 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由若干单词和若干 ...
- PAT 乙级 1009
题目 题目地址:PAT 乙级 1009 题解 本题本身属于比较简单的字符串操作题,但是因为对于string的操作和函数不熟悉导致本题做起来很费劲,需要加强对于string类以及相关方法的理解和熟练程度 ...
- PAT乙级:1072开学寄语(20分)
PAT乙级:1072开学寄语(20分) 题干 下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad,断其 wifi,使其百无聊赖,然后,净面 ...
- PAT乙级:1057 数零壹 (20分)
PAT乙级:1057 数零壹 (20分) 题干 给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一 ...
- PAT乙级:1082 射击比赛 (20分)
PAT乙级:1082 射击比赛 (20分) 题干 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找 ...
随机推荐
- 省选前的JOI
RT,发现找不到题,于是又开了新坑 JOI特色:重思考,代码难度(相比NOI系列)基本没有 (省选前到处挖坑2333) JOI 2017 Final 焚风现象 差分,莫得了 (不是看到200ms就tm ...
- Day17--Python--面向对象--成员
成员 class Person: def __init__(self, name, num, gender,birthday): # 成员变量(实例变量) self.name = name self. ...
- tomcat发布项目,运行不了
工作中经常出现项目本来运行得好好的,从SVN上面更新代码后就不行了 这个问题有时候是因为编译不成功,处理步骤如下: 1.clean整个项目,重新编译 2.如果还是不行,则把编译中认为是error的设置 ...
- BeautifulSoup获取图片
参看文档:https://www.cnblogs.com/forever-snow/p/8506746.html
- tput
tput : 改变终端显示特性,常见用法如下: tput lines : 显示终端的行数 tput cols : 显示终端的列数 tput cup line_number collum_number ...
- 线程(Thread)
package cn.gouzao.demo3; public class ThreadDemo extends Thread{ public void run(){ for(int i=0;i< ...
- win命令大全
Windows系统:开始--运行--命令大全 Nslookup-------IP地址侦测器 explorer-------打开资源管理器 logoff--- ...
- Potplayer播放器使用笔记
Potplayer播放器使用笔记 1.暂停-播放的快捷键是 空格键2.C播放视频的加速倍数3.X播放的时候减速的倍数 Tab键:显示一下播放的信息,很多 Enter键:全屏或是缩小播放窗口 全屏拉伸快 ...
- str
print('字符串操作') s='abc DEF hij' print('首字母大写') print(s.capitalize()) print('全大写') print(s.upper()) pr ...
- CentOS 网络设置
CentOS 网络设置有两种方式配置网络可以连接外网: 自动分配与手动设置Ip 一,自动分配ip: 新装的centos6.0,用ifconfig只显示ifcfg-lo的信息,可以用ifup eth0的 ...