这道题的坑点主要就在读入字符后要接受换行,如果是用char来读入,必须要注意getchar()的使用;如果使用getline()来读入字符串,可以自动处理结束时的换行,但在刚开始输入时,要键入数字后面的换行符。还有就是注意倒置输出的操作和判断是否需要倒置
L1-054 福到了
输入样例:
$ 9
@ @@@@@
@@@ @@@
@ @ @
@@@ @@@
@@@ @@@@@
@@@ @ @ @
@@@ @@@@@
@ @ @ @
@ @@@@@
输出样例:
$$$$$ $
$ $ $ $
$$$$$ $$$
$ $ $ $$$
$$$$$ $$$
$$$ $$$
$ $ $
$$$ $$$
$$$$$ $
输入样例:
& 3
@@@
@
@@@
输出样例:
bu yong dao le
&&&
&
&&&
#include <iostream>
#include <string>
const int N =105;
using namespace std;
char ch;
int n;
int main()
{
cin >> ch >> n;
getchar();//键入数字后的换行符
string s[n];
for(int i = 0; i < n; i ++ )
{
getline(cin, s[i]);//getline自动处理本次结束时的换行,防止对下次的getline函数造成影响
}
bool flag = true;
for(int i = 0; i < n; i ++ )
{
for(int j = 0; j < n; j++ )
{
//判断倒放前后是否一致
if(s[i][j] != s[n - 1 - i][n - 1 - j])//d - 1为数组右下角坐标
{//不一致时
flag = false;
//break;
}
}
}
if(flag) cout << "bu yong dao le" << endl;
//输出倒过来的结果
for(int i = n - 1; i >= 0; i-- )
{
for(int j = n - 1; j >= 0; j-- )
{
if(s[i][j] == '@') cout << ch; //循环如果是递增的, 这里就是s[n - 1 -i][n - 1 - j]
else cout << " ";
}
cout << endl;
}
return 0;
}
当然也可以使用vector来初始化数组成为空格;