PAT乙级真题练习——1009 说反话 (20 分)

1.思路 因为scanf()碰到空格默认当前字符串结束,因此用gets()读取输入的字符串,将读取的字符串存入一个一维数组中,从字符串末尾往前循环,碰到空格就输出从空格的下一个下标开始到单词末尾,因为字符串前没有空格,因此第一个单词额外输出。 2.代码

#include <stdio.h>
#include <string.h>

int main(){
          
   
	char array[90];
	int len;
	int i,j,k;
	//读取字符串 
	gets(array);
	//获取字符串长度 
	len = strlen(array);
	//定位每个单词的末尾,便于输出单词 
	k = len-1;
	for(i=len-1;i>=0;i--){
          
   
		//从后往前循环直至碰见空格,输出空格后的单词 
		if(array[i] ==  ){
          
   
			for(j=i+1;j<=k;j++){
          
   
				printf("%c",array[j]);
			}
			printf(" ");
			//定位前一个单词的末尾 
			k = i-1;
		}
		//字符串第一个单词前没有空格,要单独输出 
		if(i==0){
          
   
			for(j=i;j<=k;j++){
          
   
				printf("%c",array[j]);
			}
		}
	}
	return 0;
}
经验分享 程序员 微信小程序 职场和发展