打印大X

小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。
为了便于比对空格,所有的空白位置都以句点符来代替。

要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开(0<m<n, 3<n<1000, 保证n是奇数)
要求输出一个大X

例如,用户输入:
3 9
程序应该输出:

***.....***
.***...***.
..***.***..
...*****...
....***....
...*****...
..***.***..
.***...***.
***.....*** 

高是 9 宽是 11

再例如,用户输入:
4 21
程序应该输出

****................****
.****..............****.
..****............****..
...****..........****...
....****........****.... 
.....****......****.....
......****....****......
.......****..****.......
........********........ 
.........******.........
..........****..........
.........******.........
........********........
.......****..****.......
......****....****......
.....****......****.....
....****........****....
...****..........****...
..****............****..
.****..............****.
****................**** 

高是21 宽是 24

#include <iostream>
using namespace std;
int main(){
	//m	:	笔的宽度
	//n	:	X的高度 (0<m<n, 3<n<1000, 保证n是奇数)
	int m,n;
	cin>>m>>n;
	
	for(int i=0;i<n;i++){
		for(int j=0;j<n+m-1;j++)//矩形的高是 n 宽是 n+m-1 
		{
			for(int k=0;k<m;k++)//打印右斜  
			{
				if(i+k==j)
				{
					cout<<"*";
					goto This;//使用 goto语句 打印完*号则不打印其他 直接下一次循环 
				}	
			}
			for(int k=0;k<m;k++){
				if((i-k)+j==n-1)//打印左斜 
				{
					cout<<"*";
					goto This;
				}
			}
			cout<<".";//没有打印星号则打印句号 
			This: ;
		}
		cout<<"\n";
	} 
} 

代码满足上面两组数据

类似文章