ACM_1: 翻转句子中单词的顺序
2014-04-17 11:53
127 查看
/*输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入―I am a student ,则输出―student. a am I
思路分析: 先将所有字符全部反转,则成 tnedutS a ma I ,然后把每个单词再一次反转即可,这样负负地正!
*/
void inverse(char aa[] ,int start ,int end){ //将所有字符反转,然后一直调用这个函数!
int k=0;
char tmp;
for(k=0;k<(end- start)/2 +1;k++){
tmp = aa[start+k];
aa[start+k] = aa[end-k];
aa[end-k] = tmp;
}
}
void roll(){
char aa[100]={0};
char a;
int i=0,j;
while( (a = getchar()) !='\n'){
aa[i]=a;
i++;
}
printf("输入字符串长度为:%d",i);
printf("\n");
inverse(aa , 0, i-1);
j=0;
for(j=0;j< i; j++)
printf("%c",aa[j]);
printf("\n");
//现在已经镜像转换完毕!接下来如何把每个单词来反转。
int k=0;
int start=0;
int n= -1;
for(k=0 ; k< i; k++)
{
if (aa[k] == ' ') {
n=k;
inverse(aa , start+1 , k-1);
}
else if(aa[k]!= ' ')
start =n;
if(k== i-1) //因为最后一个单词没有结束符号(空格)!所以得手动判断!
inverse(aa,start+1,k);
}
for(j=0;j< i; j++)
printf("%c",aa[j]);
printf("\n");
}
#include<stdio.h>
#include<string.h>
int main(){
roll();
return 0;
}
例如输入―I am a student ,则输出―student. a am I
思路分析: 先将所有字符全部反转,则成 tnedutS a ma I ,然后把每个单词再一次反转即可,这样负负地正!
*/
void inverse(char aa[] ,int start ,int end){ //将所有字符反转,然后一直调用这个函数!
int k=0;
char tmp;
for(k=0;k<(end- start)/2 +1;k++){
tmp = aa[start+k];
aa[start+k] = aa[end-k];
aa[end-k] = tmp;
}
}
void roll(){
char aa[100]={0};
char a;
int i=0,j;
while( (a = getchar()) !='\n'){
aa[i]=a;
i++;
}
printf("输入字符串长度为:%d",i);
printf("\n");
inverse(aa , 0, i-1);
j=0;
for(j=0;j< i; j++)
printf("%c",aa[j]);
printf("\n");
//现在已经镜像转换完毕!接下来如何把每个单词来反转。
int k=0;
int start=0;
int n= -1;
for(k=0 ; k< i; k++)
{
if (aa[k] == ' ') {
n=k;
inverse(aa , start+1 , k-1);
}
else if(aa[k]!= ' ')
start =n;
if(k== i-1) //因为最后一个单词没有结束符号(空格)!所以得手动判断!
inverse(aa,start+1,k);
}
for(j=0;j< i; j++)
printf("%c",aa[j]);
printf("\n");
}
#include<stdio.h>
#include<string.h>
int main(){
roll();
return 0;
}
相关文章推荐
- 美国选举问题/完全背包/Knapsack
- Window环境下Python和Django的安装
- pb中的六种窗体类型
- android连接socket服务器上传下载多个文件
- C/C++基本数据结构:链表的基本使用和实现
- Oracle 学习笔记 9 -- 数据处理
- 上传文件并保存到另外一台服务器
- 做个CMS吧(一)-站点基本设置
- 【HTML】Advanced5:Accessible Forms
- poj 1039 Pipe
- Mysql 常用命令
- cacti下syslog插件安装&&syslog-ng统一管理日志
- [C++] C++小笔记之模板函数
- git基本原理详解
- vs2012自带打包工具进行部署安装
- linux下源码安装mplayer播放器 推荐
- 求最大公约数和最小公倍数引发的一些问题
- OAuth 2.0 Bearer Token Profile Vs MAC Token Profile
- 百度贴吧发帖 python代码片段
- http://blog.sina.com.cn/s/blog_6a01140c0100wimi.html