QvQ


私信TA

用户名:927937414

访问量:30536

签 名:

还是好好学习吧

等  级
排  名 79
经  验 9650
参赛次数 9
文章发表 44
年  龄 19
在职情况 学生
学  校
专  业 软件工程

  自我简介:

还没学算法的弱鸡

解题思路:

按照题目的意思一步一步展开,主要分成三层,上层、中间的X以及下边部分



注意事项:

需要注意的是循环次数为两个以上的时候上边的图案是从第二层开始的


参考代码:

#include <iostream>
using namespace std;
int n,a,b;
int main(){
	cin>>n;
	while(n--){
		cin>>a>>b;
		int c=a,d=0,e=a,f=0;
		while(f!=b) {	//输出图案次数 
			while(c!=1){	//重点循环输出的图案是从第二层开始的 
				if(f>=1){
					d++;
					c-=2;
					e-=2;
				}
				for(int j=0;j<d;j++)
					cout<<" "; //输出前面的空格个数 
				d++; 
				cout<<"X";
				for(int k=e-2;k>0;k--)
					cout<<" "; 	//输出空间空格个数
				e-=2;
				cout<<"X"<<endl;
				c-=2; 
			}
			for(int j=0;j<d;j++)
					cout<<" "; 
			if(c==1)	//c控制中间的X 
				cout<<"X"<<endl;
			while(c!=a){
				d--;
				for(int j=0;j<d;j++)
					cout<<" ";	//输出前边空格 
				cout<<"X";
				for(int l=e;l>0;l--)
					cout<<" "; 	//输出中间空格 
				e+=2;
				cout<<"X"<<endl;
				c+=2;			
			}
			f++; //控制循环层数 
		}
		cout<<endl;
	}
	return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »