[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),请你编写程序找 ...
随机推荐
- Arch Linux中使用VMware Workstation不能打开vmmon内核模块
打开VMware Workstation出现错误提示:Could not open /dev/vmmon: No such device.Please make sure that the kerne ...
- JavaScript(JS)之Javascript对象DOM之增删改查(四)
创建节点:var ele_a = document.createElement('a');添加节点:ele_parent.appendChild(ele_img);删除节点:ele_parent.re ...
- 关于MySQL锁的详解
有2种 1.表锁 2.行锁 支持 .innodb支持行锁,表级锁 .myisam只支持表级锁 innodb实现了下面2种标准的行级锁 .共享锁 S LOCK 允许事务读一行数据 .排他锁 X LOCK ...
- Java 存储时间戳的几种方式
有时需要记录一下数据生成时间的时间戳,精确到秒,这里记录一下java存储时间戳字符串的几种方式 1.DateFormat private static final SimpleDateFormat s ...
- 解决samtools报错:[main_samview] region "chr2:20,100,000-20,200,000" specifies an unknown reference name. Continue anyway.
根据Samtool 的manual文档介绍,如果想搜索bam文件的某段区域,需要用到以下命令: samtools view aln.sorted.bam chr2:20,100,000-20,200, ...
- JS重点整理之JS原型链彻底搞清楚
对象 要清楚原型链,首先要弄清楚对象: 普通对象 最普通的对象:有__proto__属性(指向其原型链),没有prototype属性. 原型对象(person.prototype 原型对象还有cons ...
- ideaJ+maven+javaweb实践: sevlet实现upload&download,javaIO代码
因为工作的机器不让拷贝出来也不让发邮件出来也不让访问外网,所以文件两个PC挪来挪去很麻烦. 决定写一个网页,只有upload和download ideaJ,maven,java,tomcat 写一个j ...
- c#中委托和事件区别
委托和事件相同的功能 class Dem5 { public Action deHandler; public event Action eveHa; public Dem5() { deHandle ...
- rownum查询前N条记录
在Oracle中,要按特定条件查询前N条记录,用个rownum就搞定了.——select * from emp where rownum <= 5 而且书上也告诫,不能对rownum用" ...
- 编写Excel文件的Golang库
github:https://github.com/360EntSecGroup-Skylar/excelize 使用用例 https://dev.to/xuri/go-library-for-rea ...