英文句子中单词的倒序打印

举个例子:

Enter a sentence:you can swallow a cage can't you?
Reversal a sentence:you can't cage a swallow can't you?

include<stdio.h>

int main()
{

    char c;
int len=1;//记录数组的长度 
char a[1001]={};
printf("Enter a sentence:");
while(c=getchar())
{
	
	a[len++]=c;//在未知个数的情况下这种写法比较简单 
	if(c=='!'||c=='?'||c=='.') break;
}
printf("Reversal a sentence:");
int x=len-2,y=len-2,z;//x,y是标记一个单词的始末位置,x通常指在空格上,z用作正向打印单词 
for(x;x>0;)
{
	x--;
	if(a[x]==' '||x==0)
	{
		
		if(y==len-2) z=x+1;//第一个空格不能打印 
		else z=x;
		for(z;z<=y;z++)
		{
			printf("%c",a[z]);
		}
		//下面这种选择打印空格的写法也行 
		/*z=x+1;//当x=0第一个数组元素不能有字母,选择浪费a[0] 
		for(z;z<=y;z++)
		{
			printf("%c",a[z]);
		}
		if(x!=0) printf(" ");
		*/
		
		x=y=x-1;//将x,y标记下一个单词 
	}
}

printf("%c",a[len-1]);//打印标点 

}
计算未知数组的长度,控制两个变量读取两个序号的内容,有两种方法可供参考,这是这道题的关键,同时碰到空格或者倒着读到第一个数组元素就要打印字母。

posted @ 2020-11-22 23:45  empty_thought  阅读(399)  评论(0)    收藏  举报