【嵌入式系统学习记录】练习:把句子中的单词倒序;(输入"i am from shanghai",输出"shanghai from am i")
2018-03-13 23:19
531 查看
把句子中的单词倒序;(输入"i am from shanghai",输出"shanghai from am i")。#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void reverse(char *str)
{
int i;
char *temp = (char *)malloc(sizeof(char) * 20);
if(NULL == temp)
{
printf("malloc failure!\n");
exit(1);
}
temp = str;
while(*str != '\0' )
{
if(*str == ' ')
{
*str = '\0';
}
str ++;
}
for(i = 0; ; ++i)
{
str--;
if(*str == '\0')
{
printf("%s ",str + 1);
}
if(str == temp)
{
printf("%s ",temp);
break;
}
}
/*while(right > left)
{
temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
char *transform(char *str1)
{
char *first = str1;
char *last = str1 + strlen(str1) - 1;
while(*str1)
{
char *part = str1;
while(*str1 != '' && *str1 != '\0')
{
str1++;
}
reverse(part,str1-1);
while(str1 - 1 > part)
{
temp = *part;
*part = *str1-1;
*str1-1 = temp;
part++;
(str1-1)--;
}
if(*str1 != '\0')
{
str1++;
}
else
break;
}
reverse(first, last);
return first;
while(last > first)
{
temp = *first;
*first = *last;
*last = temp;
first ++;
last --;
}
return first;
*/
}
int main()
{
char *str1 = (char *)malloc(sizeof(char) * 50);
if(NULL == str1)
{
printf("malloc failure!\n");
exit(1);
}
// char *str2 = (char *)malloc(sizeof(char) * 20);
printf("please input :\n");
gets(str1);//在使用scanf输入时,其空格键默认为‘\0’,作为字符串输出时,“\0”作为结束的标志位,不便连续输出,所以这里使用gets()函数
reverse(str1);
// printf("%s",str);
free(str1);//释放内存
return 0;
}
网上最常见的方法就是选择先将所有的字符逆序,再将单个单词进行逆序。这里有一种新的方法,先将指针移到字符串的末尾,在这个过程中将字符串中的‘ ’空格替换为“\0”,然后将指针往前移动,以'\0'为标志位,停止移动并顺序输出‘\0’后面的字符,以此类推,就可以将整个字符串实现要求中的逆序,而且不会在使用printf()时,将全部的字符串输出。
#include<stdlib.h>
#include<string.h>
void reverse(char *str)
{
int i;
char *temp = (char *)malloc(sizeof(char) * 20);
if(NULL == temp)
{
printf("malloc failure!\n");
exit(1);
}
temp = str;
while(*str != '\0' )
{
if(*str == ' ')
{
*str = '\0';
}
str ++;
}
for(i = 0; ; ++i)
{
str--;
if(*str == '\0')
{
printf("%s ",str + 1);
}
if(str == temp)
{
printf("%s ",temp);
break;
}
}
/*while(right > left)
{
temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
char *transform(char *str1)
{
char *first = str1;
char *last = str1 + strlen(str1) - 1;
while(*str1)
{
char *part = str1;
while(*str1 != '' && *str1 != '\0')
{
str1++;
}
reverse(part,str1-1);
while(str1 - 1 > part)
{
temp = *part;
*part = *str1-1;
*str1-1 = temp;
part++;
(str1-1)--;
}
if(*str1 != '\0')
{
str1++;
}
else
break;
}
reverse(first, last);
return first;
while(last > first)
{
temp = *first;
*first = *last;
*last = temp;
first ++;
last --;
}
return first;
*/
}
int main()
{
char *str1 = (char *)malloc(sizeof(char) * 50);
if(NULL == str1)
{
printf("malloc failure!\n");
exit(1);
}
// char *str2 = (char *)malloc(sizeof(char) * 20);
printf("please input :\n");
gets(str1);//在使用scanf输入时,其空格键默认为‘\0’,作为字符串输出时,“\0”作为结束的标志位,不便连续输出,所以这里使用gets()函数
reverse(str1);
// printf("%s",str);
free(str1);//释放内存
return 0;
}
网上最常见的方法就是选择先将所有的字符逆序,再将单个单词进行逆序。这里有一种新的方法,先将指针移到字符串的末尾,在这个过程中将字符串中的‘ ’空格替换为“\0”,然后将指针往前移动,以'\0'为标志位,停止移动并顺序输出‘\0’后面的字符,以此类推,就可以将整个字符串实现要求中的逆序,而且不会在使用printf()时,将全部的字符串输出。
相关文章推荐
- Liunx_C练习:把句子中的单词倒序;(输入"i am from shanghai",输出"shanghai from am i")
- "I am from shanghai"的多种倒序输出方式,“shanghai from am I”
- 【嵌入式系统学习记录】练习:判断一个字符串是不是另一个字符串的子串;(比如"ab"是"aabcd"的子串)
- 编写一个程序,输入一个英文句子,将其中单词位置倒置,单词内部结构不变。例如“I am from shanghai”倒置为“shanghai from am I”。
- 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结构.
- 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”; 及将句子中的单词位置倒置,而不改变单词内部结构.
- 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结构.
- 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。(笔试题) 句子中单词以空格符隔开。为简单起见,没有标点符号。 例如输入“I am a student”,则输出“student a
- 4.编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结构.
- 输入任意个单词,实现对单词位置的倒置而单词本身不变,是对“I am from shanghai”的补充。
- 【面试常考】C语言:输入:&quot;student a am i&quot;,输出&quot;i am a student,不能使用库函数
- 【嵌入式系统学习记录】练习:编写一个函数,求字符数组的前n个字符中最大字符的地址并返回该地址,字符数组和n作为函数的参数;
- 编写一个程序,接受用户输入的一段英文文字后,输出其中的字符数、单词数和句子数(设句子以"?"、"!"、"."结束)。
- 【嵌入式系统学习记录】习题:输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来。比如:帧头和帧尾分别是head和tail 字符串”asdheadhauboiso
- 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结构.
- 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结构.
- 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结构.
- 【补充】题目: 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结构.
- 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 句子中单词以空格符隔开。为简单起见,没有标点符号。 例如输入“I am a student”,则输出“student a
- 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构.