C++ 画等腰三角形终极版(可随意设置行数和三角形个数)

大学C++留的第一次作业,本来要求只需要画三个三角形,我觉得太无聊于是多写了一点,用户可以自己设置每个三角形的行数和最终输出几个三角形。

时间有限,代码里的有注释就不作详细说明了。

//生成*三角形的本质是输出一个由空格和*组成的方阵
//假设共有row行当前为第i行,则最后一行有1+2*(row-1)个*
//先输出(num-1)/2 -(i-1)个空格
//再输出1+2(i-1)个*

//如果想生成多个三角形,则先输出左侧空格和第一块三角形
//再根据整体行数决定输出空格和*三角形的次数,注意边角重复的点要删除

#include <iostream>
using namespace std;

void star(int row, int num);

int main()
{
	int num, row;
	cout << "请输入每个三角形图案您想生成的行数:";
	cin >> row;
	cout << "请输入您想生成几层三角形图案:";
	cin >> num;
	star(row, num);
	cin.get();
	cin.get();
	return 0;
}

void star(int row, int num)
{
	int count = num * row, time = 1, add = 0;					//time统计该运行几次* 空格,add统计小三角形运行到第几行
	for (int i = 1;i <= count;i++)								//最外层循环,控制整体行数
	{
		for (int j = 1;j <= num * (row - 1) - add - (time - 1) * (row - 1);j++)			//控制空格,每层递减
		{
			cout << " ";
		}
		for (int j = 1;j <= 1 + 2 * add;j++)
		{
			cout << "*";
		}

		for (int sum = 1;sum < time;sum++)						//控制空格和*三角形的输出次数
		{	//控制空格三角形的输出
			for (int j = 2 * row - 3 - 2 * add;j >= 1;j--)
			{
				cout << " ";
			}
			//控制*三角形的输出
			if (add + 1 == row)
			{
				for (int j = 1;j <= 2 * add;j++)
				{
					cout << "*";
				}
			}
			else
			{
				for (int j = 1;j <= 1 + 2 * add;j++)
				{
					cout << "*";
				}
			}
		}
		add++;
		if (add == row && time <= num)
		{
			time += 1;
			add = 0;
		}
		cout << endl;
	}
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值