给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
输出格式:每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
思路:C语言写的,回头再用Java重写一次,由于没有特殊的集成函数只能使用char[]来操作,主要思想是记录分隔符在字符数组str[]中的位置,将其Index记录在int[cnt++] arr中,计数变量cnt在for循环中可以实现每个单词的打印输出;
需要注意的是:在仅仅有一个单词的时候,要使arr[0] = str.length;
1 #include<stdio.h> 2 #include<string.h> 3 4 int main() 5 { 6 int arr[80] = {0}; 7 char str[80]; 8 gets(str); 9 int length = strlen(str); 10 int cnt = 0; 11 for(int i=0; i<length; i++)//记下字符串中空格的原始下标 12 { 13 if(str[i]== ' ') 14 arr[cnt++] = i; 15 } 16 if(cnt == 0) arr[0] = length; 17 // for(int i=0; i<cnt; i++) 18 // printf("%d ",arr[i]); 19 20 int endIndex = length; 21 for(int i=cnt-1; i>=0; i--) 22 { 23 for(int j=arr[i]+1; j<endIndex; j++) 24 { 25 if(j!=endIndex-1) 26 printf("%c",str[j]); 27 else 28 printf("%c ",str[j]); 29 } 30 endIndex = arr[i]; 31 } 32 for(int i=0; i<arr[0]; i++) 33 printf("%c",str[i]); 34 35 return 0; 36 }