一个面试题:翻转句子中单词的顺序
来源:互联网 发布:上财大数据经济学 编辑:程序博客网 时间:2024/05/18 01:24
题目要求:
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。(注意处理在输入字符串时的回车字符)
输入:需反转的字符串
输出:按照要求反转后的字符串
示例:例如输入“I am a student.”,则输出“student. a am I”
自己写的代码如下:仅供参考,如有错误和不妥之处,请大家指正。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char *str = NULL;
int i = 0;
int k = 0;
char ch;
str = (char *)malloc(128*sizeof(char));//给str分配堆空间
if( str == NULL )
{
printf("malloc error\n");
return -1;
}
memset(str, 0, 128);
// gets(str);//输入方案一
#if 1//输入方案2
while(((scanf("%c", &ch) == 1)) && (ch != 10))//当scanf与ch!=10调换位置后,会出问题,导致'/n'被写入str,调试中用到了下面被//注掉的代码,去掉尾部的'/n'
{
*str++ = ch;
k++;
}
//str--;
//*str = '\0';
//str++;
while(k > 0)//回到str的头部
{
str--;
k--;
}
#endif
while(*str != '\0')//将字符串中的空格都转换为回车
{
if(*str != 32)//与空格的ascii码32比较
{
str++;
}
else//是空格则换成'\0'
{
*str = '\0';
i++;
str++;
}
}
str--;
i++;//当字符串中单词数为2时,只有一个空格,故要将空格数+1才与单词数相同
while(i >= 0)
{
while(*str != '\0')//从后向前寻找单词,单词有i+1个,以'\0'隔开
str--;
str++;
printf("%s ", str);//打印找到的单词
str--;
str--;
i--;
}
printf("\n");
free(str);
return 0;
}
// gets(str);//输入方案一
#if 1//输入方案2
while(((scanf("%c", &ch) == 1)) && (ch != 10))//当scanf与ch!=10调换位置后,会出问题,导致'/n'被写入str,调试中用到了下面被//注掉的代码,去掉尾部的'/n'
{
*str++ = ch;
k++;
}
//str--;
//*str = '\0';
//str++;
while(k > 0)//回到str的头部
{
str--;
k--;
}
#endif
while(*str != '\0')//将字符串中的空格都转换为回车
{
if(*str != 32)//与空格的ascii码32比较
{
str++;
}
else//是空格则换成'\0'
{
*str = '\0';
i++;
str++;
}
}
str--;
i++;//当字符串中单词数为2时,只有一个空格,故要将空格数+1才与单词数相同
while(i >= 0)
{
while(*str != '\0')//从后向前寻找单词,单词有i+1个,以'\0'隔开
str--;
str++;
printf("%s ", str);//打印找到的单词
str--;
str--;
i--;
}
printf("\n");
free(str);
return 0;
}
- 一个面试题:翻转句子中单词的顺序
- 【程序员面试题】翻转句子中单词的顺序
- 经典面试题:翻转英文句子中单词的顺序
- 面试题:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。
- 面试题:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。
- 面试题38:翻转句子中单词的顺序,单词内字符的顺序不变
- 输入一个英文句子,翻转句子中单词的顺序
- 翻转句子中单词的顺序和字符串的旋转操作 c++面试题
- 程序员面试题精选(7):翻转句子中单词的顺序
- 程序员面试题精选100题(07)-翻转句子中单词的顺序
- 程序员面试题精选(07)-翻转句子中单词的顺序
- 程序员面试题精选100题(07)-翻转句子中单词的顺序
- 程序员面试题精选100题(07)-翻转句子中单词的顺序
- 程序员面试题精选100题(07)-翻转句子中单词的顺序
- 程序员面试题精选100题(07)-翻转句子中单词的顺序
- 程序员面试题精选-翻转句子中单词的顺序
- 程序员面试题精选100题(07)-翻转句子中单词的顺序[算法]
- 程序员面试题精选100题(07)-翻转句子中单词的顺序[算法]
- VS2010出现“fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”的解决方法
- HDU 1507
- cocos2dx CallfuncN方法使用
- 不是技术牛人,如何拿到国内IT巨头的Offer
- 一步一步学android控件(之十八)—— ToggleButton & Switch
- 一个面试题:翻转句子中单词的顺序
- 黑马程序员 JAVASE——线程
- 嵌入式bootloader开发之十-------裸机程序LED开发(Tiny 6410)
- HTTP协议 (二) 基本认证
- JQuery datepicker 用法(更新了动态汉化文件包路径)
- java 排序算法总结
- HTTP协议 (三) 压缩
- 制作丝巾 初学者
- HTTP协议 (四) 缓存