10、翻转句子中单词的顺序
来源:互联网 发布:路虎 爆炸 知乎 编辑:程序博客网 时间:2024/04/30 19:34
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
分析:
方法一、可以利用scanf函数以空格为分隔符的特性,按空格将字符串拆分成单词,并分别存入数组中,最后逆序输出即可。
方法二、二次颠倒字符。首先将整个字符串字符逆置,然后以空格为界,将每一个单词中字符逆置,最后输出即可。
方法一代码如下:
#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){char *a[30],s[100]; //s输入字符串,a数组存放每个单词int index=0,i; //index为单词个数while (scanf("%s",s)==1){a[index]=(char*)malloc(sizeof(char));memcpy(a[index],s,strlen(s)); //将单词拷贝到数组中。注意:不要用赋值号,那是赋的地址!!! a[index++][strlen(s)]=0;}for (i=index-1;i>=0;i--) //逆序输出{printf("%s ",a[i]);}printf("\n");return 0;}
方法二代码如下:
#include <stdio.h>#include <string.h>#include <stdlib.h>int len;char s[30];void Reverse(int start,int end);void MainFun();int main(){printf("Please input a string : ");fgets(s,sizeof(s),stdin); len=strlen(s)-1;MainFun();printf("\nThe result is : \n"); printf("%s\n",s);return 0;}void MainFun(){int m=0,n;Reverse(0,len-1);while (m<len){for (n=m;n<len&&s[n]!=' ';n++);Reverse(m,n-1);m=n+1;}}void Reverse(int start,int end){char temp;while (start<end){temp=s[start];s[start]=s[end];s[end]=temp;start++;end--;}}
- 10、翻转句子中单词的顺序
- 10、翻转句子中单词的顺序
- 翻转句子中单词的顺序(10)
- 10 翻转句子中单词的顺序。
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 10.翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序。
- 翻转句子中单词的顺序。
- vlc结构分析和视频播放的基本原理
- 第十八周实验报告(任务二)
- 解决VC6.0中dsw,dsp,c,cpp等文件关联问题
- Android学习笔记之百度地图(驾车路线搜索及RouteOverlay步行路线搜索及RouteOverlay)
- gdb调试时查看内存
- 10、翻转句子中单词的顺序
- 求职意向:程序员
- http://xiaoruanjian.iteye.com/blog/1366851
- 本人亲测Win8支持Vc6.0,有图为证
- cannot convert parameter 1 from 'const char *' to 'LPCWSTR
- 搞ACM的你伤不起
- 清华大学2001年复试上机题 第一套 解题报告
- android支持常用的距离单位
- C语言学习之路之四-----------C语言的运算符与表达式