#include<stdio.h>
int main(){
char str[100][100];
int cnt = 0;
while(scanf("%s", str[cnt])!= EOF){
cnt++;
}
for(int i = cnt - 1; i >= 0; i--){
printf("%s", str[i]);
if(i != 0) printf(" ");
}
return 0;
}
参考算法笔记,scanf("%s",str[ ])遇空格结束,利用空格分隔符
#include<stdio.h>
#include<iostream>
using namespace std;
int main(){
string str;
char s[100][100];
getline(cin, str);
int n = str.size(), cnt = 0, k= 0;
for(int i = 0; i < n; i++){
if(str[i] != ' '){
s[cnt][k++]=str[i];
}else{
k=0;
cnt++;
}
}
for(int i = cnt; i >=0; i--){
printf("%s", s[i]);
if(i != 0) printf(" ");
}
return 0;
}
参考算法笔记,15min,一维字符串数组存整个输入,二维字符串数组存以空格分隔的单词
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main(){
int a[100], cnt = 1;
a[0] = -1;
string str;
getline(cin, str);
int len = str.size();
for(int i = 0; i < len; i++){
if(str[i] == ' ') a[cnt++] = i;
}
a[cnt] = len;
for(int i = cnt - 1; i >=0; i--){
for(int j = a[i] + 1; j < a[i+1]; j++)
printf("%c", str[j]);
if(i != 0) printf(" ");
}
return 0;
}
将每个空格的数组下标存入数组a,再倒序输出