PAT--L1-054 福到了(15 分)
阿新 • • 發佈:2019-02-20
L1-054 福到了(15 分)
“福”字倒著貼,寓意“福到”。不論到底算不算民俗,本題且請你編寫程式,把各種漢字倒過來輸出。這裡要處理的每個漢字是由一個 N × N 的網格組成的,網格中的元素或者為字元 @
或者為空格。而倒過來的漢字所用的字元由裁判指定。
輸入格式:
輸入在第一行中給出倒過來的漢字所用的字元、以及網格的規模 N (不超過100的正整數),其間以 1 個空格分隔;隨後 N 行,每行給出 N 個字元,或者為 @
或者為空格。
輸出格式:
輸出倒置的網格,如樣例所示。但是,如果這個字正過來倒過去是一樣的,就先輸出bu yong dao le
,然後再用輸入指定的字元將其輸出。
輸入樣例 1:
$ 9
@ @@@@@
@@@ @@@
@ @ @
@@@ @@@
@@@ @@@@@
@@@ @ @ @
@@@ @@@@@
@ @ @ @
@ @@@@@
輸出樣例 1:
$$$$$ $
$ $ $ $
$$$$$ $$$
$ $ $ $$$
$$$$$ $$$
$$$ $$$
$ $ $
$$$ $$$
$$$$$ $
輸入樣例 2:
& 3
@@@
@
@@@
輸出樣例 2:
bu yong dao le
&&&
&
&&&
解題思路 :這題很簡單,一開始我還以為要自己打印出來,然後再看一下題目就理解了,就是把輸入的倒過來,然後把不是空格的替換成替換成要求的字元就好了,要注意的是每次換行的那個字元要用getchar()給去掉,要不然會出問題,我一開始不知道哪裡出問題,然後輸入的時候發現不對勁,後面才反映過來,它把換行的字元也輸入進去了,然後處理一下就ok了。
#include<bits/stdc++.h> using namespace std; char c[101][101],d[101][101]; int main(void) { char a; int n,flag=0; scanf("%c %d",&a,&n); getchar(); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { scanf("%c",&c[i][j]); } getchar(); } for(int i=n-1,p=0;i>=0;p++,i--) { for(int j=n-1,q=0;j>=0;q++,j--) { d[p][q]=c[i][j]; } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(c[i][j]!=d[i][j]) { flag=1; break; } } } if(flag==1) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(d[i][j]!=' ') printf("%c",a); else printf("%c",d[i][j]); } cout<<endl; } } else { printf("bu yong dao le\n"); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(d[i][j]!=' ') printf("%c",a); else printf("%c",c[i][j]); } cout<<endl; } } return 0; }