给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
输出格式:每个测试用例的输出占一行,输出倒序后的句子。
输入样例:Hello World Here I Come输出样例:
Come I Here World Hello
解题注意点:
字符串输入问题:
scanf :当遇到回车,空格和tab键会自动在字符串后面添加'\0',但是回车,空格和tab键仍会留在输入的缓冲区中。
gets:可接受回车键之前输入的所有字符,并用'\n'替代 '\0'.回车键不会留在输入缓冲区中
gets()用到读取字符串,用回车结束输入
scanf()可以读取所有类型的变量
字符串输出问题:
printf(“%s”,str)和puts(str)均是输出到'\0'结束,遇到空格不停,但puts(str)会在结尾输出'\n',printf(“%s”,str)不会换行。printf(“%s\n”,str)可以替换puts(str)。
#include<stdio.h>
#include<string.h>
#define SIZE 81
int main(){
char ch[SIZE];
char str[SIZE][SIZE];
gets(ch);
int k = 0;
int i,j,m = 0;
for(i = 0;i < SIZE;i++){
for(j = 0;j < SIZE;j++){
if(k < strlen(ch)){
if(ch[k] !=' '){
str[i][j] = ch[k];
k++;
}else{
k++;
m++;
break;
}
}
}
}
for(i = m;i > 0;i--){
printf("%s",str[i]);
printf(" ");
}
printf("%s",str[0]);
return 0;
}