超简洁易懂,C语言,单词倒序,键盘输入“ I love you ! ”,然后终端输出 “ ! you love I ”

  • Post author:
  • Post category:其他




1.纯代码截屏

![代码截屏](https://img-blog.csdnimg.cn/20200518225551585.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc3NjI4NA==,size_16,color_FFFFFF,t_70



2.代码解说

//若不加注释,则代码行加符号总共为40几行,关键的处理代码行只有10行
#include <stdio.h>
#include <string.h>

int main()
{
	//定义一个结构体,用于存放输入中的单词和空格数量		   (输入的英文语句一定可看成是由N对“m(m可为0)个空格+1	  个单词”单元构成)
	struct A{	
		char s[50];//存放本单元的单词
		unsigned int SpaceCount;//表示本单元空格的数量
	};
	struct A Data[30] = {{"\0",0}};//开辟30个单元的该数据结构体,且将所有数组元素的值初始化为0
	char ch = 0,IsZiMu = 0;//IsZiMu用于标志本次从键盘中接收到的数据是否为字母,每次接收到字母在进行处理后都将IsZiMu置为1,每次接收到空格在进行处理后都将IsZiMu置为0,并且通过这个标志可以判断到上一次接收到的数据是否为字母
	int num = 0,i = 0;//num用于标志输入的第几个单元(“m(m可为0)个空格+1个单词”)
	while((ch = getchar()) != '\n')
	{
		if(ch == ' ')
		{
			if(IsZiMu == 1)//判断是否开始输入了新的单元
				num++;
				IsZiMu = 0;
				i = 0;
				(Data[num].SpaceCount)++;
		}
		else
		{
			IsZiMu = 1;
			Data[num].s[i++] = ch;
		}
	}
	printf("put:");
	while(num >= 0)
	{
		i = Data[num].SpaceCount;
		printf("%s",Data[num].s);
		while(i > 0)
		{
			putchar(' ');
			i--;
		}
		num--;
	}
	printf("*\n");
}



3.运行结果演示

运行结果



版权声明:本文为weixin_43776284原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。