C语言编程题:逆序输出字符串中的单词,不保留开头和结尾,相邻单词只保留一个空格。

编写函数以实现以下功能:

输入:一行字符串

输出:逆序输出字符串中的单词,不保留开头和结尾的空格,相邻单词间仅保留一个空格

样例(□代表空格):

•输入

□□□□Hello□□everyone,□we□are□Linuxer□

•输出

Linuxer□are□we□everone,□Hello

#include<stdio.h>
#include<string.h>
void print(char* in)  //编写一个函数来输出字符串 
{
	char temp[100];
	int i=0,j=0,k=0;
	char stack[100][100];  //创建一个栈
	while(*in)
	{
		if(*in!=' ')   //判断输入是否为空格
		{
			temp[i] = *in;
			i++;
		}
		if(*in == ' '&& i!=0)
		{
			for(j=0;j<i;j++) 
			{
				stack[k][j] = temp[j];
			}
	stack[k][j] = '\0';   //栈顶添加 '\0'
			i=0;
			k++;
		}
		in++;
	}
	for(i=k-1;i>0;i--)  //输出前k-1个字符
	{
		printf("%s ",stack[i]);
	}
	printf("%s",stack[0]);  //输出最后一个字符
}
int main()
{
	char input[]="    Hello  everyone, we are xiyouLinuxer ";
	print(input);
} 

其实这道题还有很多做法,我这里列举的只是其中一种做法,如果大家还有什么刚好的做法我们也可以一起讨论

发布了19 篇原创文章 · 获赞 9 · 访问量 4570

猜你喜欢

转载自blog.csdn.net/qq_43777627/article/details/90485774