输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
2018-01-28 21:53
986 查看
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,没有标点符号。
例如:输入“I am a student”,则输出“student a am I”
以下是我设计的程序的源代码,自认为不是最优算法,日后还会加以研究,补上更好的算法。
#include <stdio.h>
#include <string.h>
#define MAX 20
int main()
{
int i, count=0;
char str[MAX],tmp;
char *p,*q;
//先将字符串的字符顺序颠倒
printf("please input a English sentence:\n");
fgets(str, MAX, stdin);
int len = strlen(str);
for(i=0; i<len/2; i++)
{
tmp = str[i];
str[i] = str[len-i-1];
str[len-i-1] = tmp;
}
printf("\n");
//将每一个单词换回正常顺序
for(i=0; i<len+1; i++)
{
count++;
if(str[i] == ' ' || str[i] == '\n')
{
p = &str[i-count+1]; //取单词的首地址
q = &str[i-1]; //取单词的尾地址
count = 0;
while(p < q) //调换每个单词字母的顺序
{
tmp = *p;
*p = *q;
*q = tmp;
p++;
q--;
}
}
}
fputs(str,stdout);
printf("\n");
4000
ret
例如:输入“I am a student”,则输出“student a am I”
以下是我设计的程序的源代码,自认为不是最优算法,日后还会加以研究,补上更好的算法。
#include <stdio.h>
#include <string.h>
#define MAX 20
int main()
{
int i, count=0;
char str[MAX],tmp;
char *p,*q;
//先将字符串的字符顺序颠倒
printf("please input a English sentence:\n");
fgets(str, MAX, stdin);
int len = strlen(str);
for(i=0; i<len/2; i++)
{
tmp = str[i];
str[i] = str[len-i-1];
str[len-i-1] = tmp;
}
printf("\n");
//将每一个单词换回正常顺序
for(i=0; i<len+1; i++)
{
count++;
if(str[i] == ' ' || str[i] == '\n')
{
p = &str[i-count+1]; //取单词的首地址
q = &str[i-1]; //取单词的尾地址
count = 0;
while(p < q) //调换每个单词字母的顺序
{
tmp = *p;
*p = *q;
*q = tmp;
p++;
q--;
}
}
}
fputs(str,stdout);
printf("\n");
4000
ret
相关文章推荐
- 输入一个英文句子,翻转句子中单词的顺序,但单词内字符顺序不变
- 输入一个英文句子,翻转句子中单词的顺序,单词内字符顺序不变
- 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。(笔试题) 句子中单词以空格符隔开。为简单起见,没有标点符号。 例如输入“I am a student”,则输出“student a
- 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
- C++: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
- 面试题:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。
- (Java)输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,句子中单词以单个空格符隔开
- 面试题:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。
- "输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student
- 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 句子中单词以空格符隔开。为简单起见,没有标点符号。 例如输入“I am a student”,则输出“student a
- java算法实现之--输入一个英文句子,翻转句子中的单词顺序,但单词内字符的顺序不变
- 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student
- 每天学习一点编程(2)(输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变)
- 每天学习一算法系列(10)(输入一句英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,句子中单词以空格符隔开)
- 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不改变
- java算法实现"输入一个英文句子,反转句子中的单词顺序,但单词内字符的顺序不变"
- 编写一个程序,输入一串不超过60个字符组成的且不包含换行符的字符串,将字符串中的A到Z的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度相同,并且要求只对A到Z的字母重新排列,其
- 翻转句子内单词的顺序,但单词内字符顺序不变,包括标点
- 面试题38:翻转句子中单词的顺序,单词内字符的顺序不变
- 翻转句子中单词的顺序,但单词内字符的顺序不变