pat乙級1009說反話 以及加強版
阿新 • • 發佈:2019-01-28
#include<iostream> #include<string.h> using namespace std; int main() { char st[81]; char a[81][81]; cin.get(st,81); int column,line; column=line=0; for(int i=0;i<strlen(st);i++){ if(st[i] != ' '){ a[column][line++]=st[i]; } else{ a[column][line]='\0'; //每個字串後面加上結束符 不加會越界 column++; line=0; } } a[column][line]='\0'; for(int j=column;j>=1;j--){ cout<<a[j]<<" "; } cout<<a[0]; return 0; }
下面是可以實現兩個字元之間存在多個空格的情況,思路和上面一樣,只是在遇到空格時加個迴圈就ok了
#include<iostream> #include<string.h> #include<cstdio> using namespace std; int main() { char st[81]; char a[81][81]; cin.get(st,81); int column,line; column=line=0; for(int i=0;i<strlen(st);i++){ if(st[i] != ' '){ a[column][line++]=st[i]; } else{ a[column][line]='\0';// while(st[i] == ' '){ i++; } i--; //注意此時跳出迴圈條件是不為空格 如果不進行i-- for迴圈裡還要再進行i++ 肯定會漏掉字串 下圖1所示 column++; line=0; } } a[column][line]='\0'; for(int j=column;j>=1;j--){ cout<<a[j]<<" "; } cout<<a[0]; return 0; }`
正確情況