C++之PTA 1009:说反话
思路:标记每个单词的首字母,通过首字母和空格这两个标记分割开每个单词,并存放到一个二维数组中,最后逆序输出即可
#include <iostream>
#include<string>
using namespace std;
int main(){
string p;
char word[80][80]; //存放单词
int flag[80]={0}; //标记首字母, 置1
getline(cin,p); //输入带空格的字符串
int i,j,k,t=0;
flag[0]=1; //标记第一个单词的首字母
for(i=0;p[i]!='\0';i++){
if(p[i]==' '){
flag[i+1]=1;
}
}
for(i=0;p[i]!='\0';i++){
if(flag[i]==1){
j=i;
for(k=0;;j++,k++){\
if(p[j]==' ') break;
if(p[j]=='\0') break; //最后一个单词的末位没有空格,但有'\0'
word[t][k]=p[j];
}
t++;
}
}
for(t--;t>=0;t--){
if(t>0){
cout<<word[t]<<" ";
}else{
cout<<word[t];
}
}
return 0;
}