单词翻转
2015-10-30 10:12
211 查看
问题描述:输入一个英文句子,翻转句子中单词的顺序。要求单词内字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如,若输入“I am a student.”,则输出”student. a am I”。
翻转每个句子。
遇到空格就翻转单词,最后一个单词翻转要额外处理;
scanf输入一行字符串scanf(“%[^\n]”,s),用getline函数也可;
分析
翻转每个单词;翻转每个句子。
代码
include <stdio.h> include <string.h> define MAXSIZE 1000 void ReverseString(char *s ,int from, int to); int main(int argc, char *argv[]){ char s[MAXSIZE]; int pre = 0; int cur = 0; int n = 0; scanf("%[^\n]",s); n = strlen(s); printf("%s\n",s); while (cur < n){ if (s[cur] == ' '){ ReverseString(s,pre,cur-1); pre = cur+1; } ++cur; } if (s[cur-1] != ' '){ ReverseString(s,pre,cur-1); pre = cur+1; } ReverseString(s,0,n-1); printf("%s\n",s); return 0; } void ReverseString(char *s ,int from, int to){ while(from < to){ char tmp s[from]; s[from] = s[to]; s[to] = tmp; from++; to--; } }
重点
两个位置指示器,分别指向单词开始和结束位置;遇到空格就翻转单词,最后一个单词翻转要额外处理;
scanf输入一行字符串scanf(“%[^\n]”,s),用getline函数也可;
相关文章推荐
- 微信支付app支付3.0接口开发
- php 连续留存与留存人数计算
- docker详细的基础用法
- Day7.2 计算机中的进制
- 51nod 1089 最长回文子串 V2 (Manacher算法)
- python第一章1.2 初步走进编程之门
- Java重写方法与初始化的隐患
- 【codevs1191】数轴染色 并查集
- 学习windows驱动(温习3)
- apt-get
- selenium+eclipse搭建及编写第一个test代码
- mysql中or和in的效率问题
- 数据结构和算法学习 —— 一次一题
- 如何在Django1.8 结合Python3.4版本中使用MySql
- 栈与函数调用惯例
- objective-c 绘图资料
- TJ Holowaychuk是怎样学习编程的?
- 博客的名字怎么修改啊?
- 111
- URL