打印回形字

打印回形字

题目:
打印一个回形字

输入格式
多组输入输出,如果遇到.字符,则表示所做出来的图形已经够了。

每个测试样例为一行包含一个字符和一个整数n(6<=n<=50),字符代表用这个字符来打印图形,n代表这个图形高度

输出格式
每个回字形中间应空一行,行末没有多余的空格,最后一个图形后面没有多余空行。

样例输入
a 7
a 6
.
样例输出
aaaaaaaaaaaaaa
a a
a aaaaaa a
a aaaaaa a
a aaaaaa a
a a
aaaaaaaaaaaaaa

aaaaaaaaaaaa
a a
a aaaa a
a aaaa a
a a
aaaaaaaaaaaa

说明/提示
为保证图形对称,中间矩形的长一定是偶数。

中间矩形的长为k,k=(n*2-2)/2,k如果不是偶数就-1。

中间矩形和外框的左右的距离为(n*2-中间矩形的长-2)/2,

上下和外框的距离都是一行。

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main()
{
	int n;
	char m;
	while (cin>>m) {
		if (m=='.') {	//第一个字符若为.则结束
			break;
		}
		cin>>n;
		int k=(n*2-2)/2;
		if (k%2!=0) {
			k=k-1;
		}
		int juli=(n*2-k-2)/2;
		for (int i=0;i<n;i++) {
			if (i==0||i==n-1) {		//首行和末行 只输出字符
				for (int j=0;j<2*n;j++) {
					cout<<m;
				}
				cout<<endl;
			}
			if (i==1||i==n-2) {		//第二行和倒数第二行
				cout<<m;
				for (int j=0;j<2*n-2;j++) {
					cout<<" ";
				}
				cout<<m;
				cout<<endl;
			}
			if (i>=2&&i<n-2) {		//中间需输出矩形的部分
				cout<<m;
				for (int j=0;j<juli;j++) {
					cout<<" ";
				}
				for (int j=0;j<k;j++) {
					cout<<m;
				}
				for (int j=0;j<juli;j++) {
					cout<<" ";
				}
				cout<<m;
				cout<<endl;
			}
		}
	cout<<endl;
	}
	return 0;
}
上一篇:在未来给我们看病的将是医疗机器人?


下一篇:android字符串中提取手机号