这个题目有些类似C语言的倒三角,但是图形比倒三角要复杂,规律比倒三角要难找得多。。。。
(偷了别人的方法)
题目描述:
历届试题 打印十字图
问题描述
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
对方同时也需要在电脑 dos 窗口中以字符的形式输出该标志,并能任意控制层数。
输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。
样例输入 1
1
样例输出
1
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..
样例输入 2
3
样例输出
2
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$ $.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
提示请仔细观察样例,尤其要注意句点的数量和输出位置。
1 #include<iostream> 2 using namespace std; 3 4 int hoge(int x,int y,int n){ 5 if(x == 2 * (n+1) && y <= 2 * n) //第一排 6 return 1; 7 else if(x == 2 * n + 1 && y == 2 * n) //第二排 8 return 1; 9 else if(x < 2 * n && y == 2 * (n+1)) //四周边框 10 return 1; 11 else if(x == 0 && y == 0) //图形中心 12 return 1; 13 else if(x == 2 * n && (y == 2 * (n+1) || y == 2 * (n+1) - 1 || y == 2 * (n+1) - 2)) //第三排 14 return 1; 15 return 0; 16 } 17 18 int main(){ 19 int n; 20 cin >> n; 21 int x = 2 * (n+1); 22 for(int i = 0;i < 4 * n + 5;i++){ 23 for(int j = 0;j < 4 * n + 5 ;j++){ 24 int k; 25 for(k = 0;k <= n; k++) 26 if(hoge (abs (x-i),abs (x-j), k) ==1){ 27 cout<<"$"; 28 break; 29 } 30 if(k == n+1) 31 cout<<"."; 32 } 33 cout<<endl; 34 } 35 return 0; 36 }