解题思路:

我把金字塔外面的空格用零表示,金字塔内部的空格用一表示,以第三个金字塔为例
观察图像可以发现除了最后一行和第一行之外,其他的金字塔中间都是空白的,整体是对称的,所以是有规律的
规律如下: 

00*
0*1*
*****

000*
00*1*
0*111*
*******          此行7个*

第1行 0000*
第2行 000*1*
第3行 00*111*
第4行 0*11111*
第5行 *********       此行9个*

最后面一行最简单直接输出(2*行数-1 )个或者[2*(行数-1) + 1]个*就可以了
第一行也可以直接输出,但是我感觉除了最后面一行外,它们当一个整体会更加好操作
然后我分别找出零和一的规律,把零和一的规律写出来,然后再把零和一的规律结合在一起,使用同一个外循环
至于它们的*,这个就非常容易解决了,第一个*跟随零,第二个*跟随一就行
然后改1和0为一个空格


注意事项:
难点:把外面的空格与中间空格的规律结合起来,使用同一个外循环


参考代码:

#include<bits/stdc++.h>
using namespace std ;
int main( )
{
	int n = 0 ;
	cin >> n ;
	int num = 2*(n-1) + 1 , nu = n - 1 ;
	for ( int i = nu ; i > 0 ; i -- )
	{
		for ( int j = i ; j > 0 ; j -- )
		{
			cout << "0" ;
		}		
		cout << "*" ;
		int p = nu-i ;
		for ( int j = 2*p - 1 ; j > 0 ; j -- )
		{
			cout << "1" ;
		}
		if ( p != 0 ) cout << "*" ;
		cout << endl ;
	}

	for ( int i = 0 ; i < num ; i ++ )
	{
		cout << "*" ;
	}
	cout << endl ;
	return 0 ;
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论