QvQ


私信TA

用户名:927937414

访问量:28299

签 名:

还是好好学习吧

等  级
排  名 77
经  验 9419
参赛次数 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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区