翻转英文句子中单词的顺序
2015-11-09 16:29
351 查看
利用字符串中的索引下标进行定位,先将整个英文句子翻转,而后将每个英文单词进行翻转
/* *程序说明:将一个英文句子翻转,单词中的字母顺序不变 *程序思路: 先将整个句子翻转,然后将各个单词中的字母顺序翻转 */ #include <iostream> #include <string> using namespace std; //将从指针begin到end指针之间的字符进行反转,其中也包括begin和end所指向的字符 void reverseWord2(char *begin,char *end){ if(begin == NULL || end == NULL){ return; } while(begin < end){ char temp = *begin; *begin = *end; *end = temp; --end; ++begin; } } int main(int argc, char *argv[]) { char s[] = "I am a student"; reverseWord2(&s[0],&s[strlen(s) - 1]); cout<<"将整个句子翻转过来之后的新的句子为:"<<s<<endl; //以空格为分割点,将字符串的每个单词进行反转 int i = 0,j = 0; while(i != strlen(s)){ while(i != strlen(s) && isspace(s[i])){ cout<<"i++"<<endl; ++i; } cout<<"此时的i="<<i<<endl; j = i; while(j != strlen(s) && !isspace(s[j])){ cout<<"j++"<<endl; ++j; } cout<<"此时的j="<<j<<endl; cout<<"第一个单词翻转之前为:"; for(int k = i;k < j;k++){ cout<<s[k]; } cout<<endl; //此处传参数一定要传入&s[j-1],记住,一定是j-1,不能是j, //因为reverseWord2这个函数时把从i到j之间的字母翻转过来,包括了j,然而经过while循环之后j已经指向了单词之间的空格 reverseWord2(&s[i],&s[j-1]); cout<<"第一个单词翻转之后的结果为:"; for(int l = i;l < j;l++){ cout<<s[l]; } cout<<endl; cout<<"接下来让i在j的位置的基础上再往前一步,跳过这个空格"<<endl; i = j; } //输出字符串 for(int i = 0;i < strlen(s);i++){ cout<<s[i]; } return 0; }
相关文章推荐
- 第十一周项目1-二叉树算法验证(二叉树算法构造的验证)
- 线性拟合和线性回归
- Redis学习笔记之(十一)管道与节省空间
- 第九周项目四-广义表算法库
- 第十周 项目3--利用二叉树遍历思想解决问题
- MYSQL 5.0 以上 8小时超时问题
- 自定义UITableViewCell(registerNib: 与 registerClass: 的区别)
- 第十一周项目1层次遍历算法的验证
- 第7周项目6--停车场模拟
- window下安装MPI
- linux 下VLAN功能实现(转)
- 用可重用的链表模块来实现命令行菜单小程序V2.5
- 攻略强制换行与强制不换行
- CSS设计模式之三权分立模式篇
- CANVAS左开右闭
- CSS3中的Opacity多浏览器透明度兼容性问题
- log4j
- 导入项目 报错 Gradle DSL method not found: 'android()
- Redis学习笔记(十)进阶之消息通知
- Log4Net目标日志文件控制