今天先做一个简单的问题。
问题描述:
翻转句子中单词的顺序
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理
例如:输入“I am a student.”,则输出“student.a am I”。
- /*
- Name: reverse.h
- Author: suzhou
- Date: 2014.02.12
- Num. 1
- */
- #include"stdio.h"
- #include"string.h"
- void reverseStr(char* str, int i, int j);
- void reverseWords(char* str);
- /*
- File: wordsreverse.c
- Author: suzhou
- Date: 2014.02.12
- Num. 1
- Question:
- 翻转句子中单词的顺序。
- 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
- 句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
- 例如输入“I am a student.”,则输出“student.a am I”。
- */
- #include"reverse.h"
- /* 字符串反转
- */
- void reverseStr(char* str, int i, int j)
- {
- for (; i < j; i++, j--)
- {
- char tmp;
- tmp = str[i];
- str[i] = str[j];
- str[j] = tmp;
- }
- return ;
- }
- /* 句子反转
- */
- void reverseWords(char* str)
- {
- int i = 0;
- char* subStrStart;
- char* subStrEnd;
- char* currentPos;
- currentPos = str;
- while(*currentPos!='\0')
- {
- subStrStart = currentPos;
- while(*currentPos!=' ' && *currentPos!='\0')
- currentPos++;
- subStrEnd = currentPos - 1;
- reverseStr(str, (int)(subStrStart - str), (int)(subStrEnd - str));
- currentPos++;
- }
- return;
- }
- int main()
- {
- char str[20] = "I am a student.";
- reverseStr(str, 0, strlen(str)-1 );
- reverseWords(str);
- printf("%s\n", str);
- return 0;
- }
不要认为实现这类基础算法是“重复造车轮”,能说这句话的前提条件是自己有造车轮的能力。好好打牢基础才是现阶段的关键任务。
转摘:http://blog.youkuaiyun.com/zs634134578/article/details/19136097
本文介绍了一种通过C语言实现的算法,该算法能够翻转一个英文句子中单词的顺序,同时保持每个单词内部字符的原有顺序。通过示例演示了如何将“I am a student.”转换为“student. a am I”。
541

被折叠的 条评论
为什么被折叠?



