1009 说反话 (20 分)(c语言)

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子。

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello
#include <stdio.h>
#include <string.h>
void transform(char a[]);
int main() {
	char a[100];
	gets(a);
	int length = strlen(a);
	transform(a);
	int flag = 1;
	for (int cnt = length - 1; cnt >= 0; cnt--) {

		if ( a[cnt-1]=='\0' && a[cnt] != '\0' || cnt==0) {
			if (flag) {
				printf("%s", &a[cnt]);
				flag = 0;
			}
			else printf(" %s",& a[cnt]);
		}
		
	}
	return 0;
}
void transform(char a[]) {
	int length = strlen(a);
	for (int cnt = 0; cnt < length; cnt++) {
		if (a[cnt] == ' ') {
			a[cnt] = '\0';
			//printf("* ");
		}
	}
}

1.本题主要在ransform函数中,要先用变量length将a的长度存取,因为转化完以后,里面都被我分割成了小字符串

2.还要注意,题目虽然给的都是都是大小写区分........然而实际上,还是一个单词一个单词的输出,如abc这样的数据其实也是有的,所以单纯用大写只能通过一些用例,但无法通过所有样例

Guess you like

Origin blog.csdn.net/just_a_fresh_man/article/details/121410963