C++编程练习 利用嵌套循环实现各类三角形图案

原题来自菜鸟教程

C++ 实例 - 创建各类三角形图案

文章目录

  • 1.*组成的直角三角形
  • 2.数字组成的三角形
  • 3.字母组成的三角形
  • 4.打印*组成的倒三角
  • 5.打印数字组成的倒三角形
  • 6.*构成的金字塔型正三角形(近似)
  • 7.数字构成的金字塔
  • 8.*构建倒金字塔

1.*组成的直角三角形

预期效果
C++编程练习 利用嵌套循环实现各类三角形图案_第1张图片

#include
using namespace std;

int main()
{
	int rows;
	cout << "please input how many rows do you want to print:";
	cin >> rows;
	for (int i=1; i<=rows; i++){
		for (int j=1; j<=i; j++){
			cout << "*";
		}
		cout << endl;
//		cout << "\n";别忘了转义符的换行方法啊~ 
	}
}

C++编程练习 利用嵌套循环实现各类三角形图案_第2张图片

2.数字组成的三角形

C++编程练习 利用嵌套循环实现各类三角形图案_第3张图片

同理~
稍微改一下输出即可 原理相同~

#include
using namespace std;

int main()
{
	int rows;
	cout << "please input how many rows do you want to print:";
	cin >> rows;
	for (int i=1; i<=rows; i++){
		for (int j=1; j<=i; j++){
			cout << j << " ";//稍微改一下输出即可  原理相同~
		}
		cout << endl;
//		cout << "\n";别忘了转义符的换行方法啊~ 
	}
}

C++编程练习 利用嵌套循环实现各类三角形图案_第4张图片

3.字母组成的三角形

C++编程练习 利用嵌套循环实现各类三角形图案_第5张图片

#include
using namespace std;

int main()
{
	char input,alphabet = 'A';
	cout << "请输入最后一个大写字母:";
	cin >> input;
	for (int i=1; i<=(input - 'A' + 1); i++){
		for (int j=1; j<=i; j++){
			cout << alphabet << " ";
		}
		alphabet ++;
		
		cout << endl;
//		cout << "\n";别忘了转义符的换行方法啊~ 
	}
}

C++编程练习 利用嵌套循环实现各类三角形图案_第6张图片

4.打印*组成的倒三角

C++编程练习 利用嵌套循环实现各类三角形图案_第7张图片

#include
using namespace std;

int main()
{
	int rows;
	cout << "please input how many rows do you want to print:";
	cin >> rows;
	for (int i=rows; i>=1; i--){
		for (int j=i; j>=1; j--){
			cout << "*";
		}
		cout << endl;
//		cout << "\n";别忘了转义符的换行方法啊~ 
	}
}

C++编程练习 利用嵌套循环实现各类三角形图案_第8张图片

5.打印数字组成的倒三角形

C++编程练习 利用嵌套循环实现各类三角形图案_第9张图片
C++编程练习 利用嵌套循环实现各类三角形图案_第10张图片

6.*构成的金字塔型正三角形(近似)

到了这里终于是上了一些难度~
难度在于——把空间空出来~
C++编程练习 利用嵌套循环实现各类三角形图案_第11张图片
这个还算简单 重点就是把每行第一个星号之前的位置空出来~
C++编程练习 利用嵌套循环实现各类三角形图案_第12张图片

本人解法——代码如下:

#include
using namespace std;

int main()
{
	int space, rows;
	 
	cout << "please input how many rows do you want to print:";
	cin >> rows;
	
	for (int i=1; i <= rows; i++){
		for (space = 1; space <= rows - i; space++){
//			第一行打 rows-1 个空格
//          最后一行无空格 
			cout << " ";
		}
		
		for(int k = 0; k <= 2*i - 1 ;k++){
			cout << "* ";
			k++;
		} 
		cout << endl;
//		cout << "\n";别忘了转义符的换行方法啊~ 
	}
	return 0;
}

这里菜鸟教程给出了一个很有意思的方法:
在打印金字塔的组成部分——“*”时
用了一个巧妙的while循环 打印出每层的 星号
C++编程练习 利用嵌套循环实现各类三角形图案_第13张图片

搭配上外层for循环末尾k值的清零
C++编程练习 利用嵌套循环实现各类三角形图案_第14张图片

C++编程练习 利用嵌套循环实现各类三角形图案_第15张图片
完整代码如下:

#include
using namespace std;

int main()
{
	int space, rows;
	 
	cout << "please input how many rows do you want to print:";
	cin >> rows;
	
	for (int i=1,k=0; i <= rows; i++,k=0){
//		每次循环结束 k清0 ~~ 
		for (space = 1; space <= rows - i; space++){

			cout << " ";
		}
		while(k != 2*i-1)
        {
            cout << "* ";
            ++k;
        }
		cout << endl;

	}
	return 0;
}

7.数字构成的金字塔

C++编程练习 利用嵌套循环实现各类三角形图案_第16张图片
完整代码如下:

#include
using namespace std;

int main()
{
	int rows, count = 0, count1 = 0, k = 0;
	 
	cout << "please input how many rows do you want to print:";
	cin >> rows;
	
	for (int i=1; i <= rows; ++i){
		for (int space = 1; space <= rows - i; ++space){

			cout << "  ";
			++count;
		}
		
		while(k != 2*i-1)
        {
            if(count <= rows-1)
            {
            	cout << i+k <<" ";
            	++count;
			}
			else{
				++count1;
				cout << i+k-2*count1 <<" ";
			}
			++k;
        }
        count1 = count = k = 0;
        //将count值 k值清零
		cout << endl;

	}
	return 0;
}

难度升级 因为要输出的不止是单调的星号*
而是需要输出这样对称的数字
所以在while循环中 需要分情况
C++编程练习 利用嵌套循环实现各类三角形图案_第17张图片

8.*构建倒金字塔

效果如下:
C++编程练习 利用嵌套循环实现各类三角形图案_第18张图片
代码如下:

#include
using namespace std;

int main()
{
	int rows;
	 
	cout << "please input how many rows do you want to print:";
	cin >> rows;
	
	for (int i=rows; i >=1; --i){

		for (int space = 0; space < rows - i; ++space)
			cout << "  ";
		
		for (int j=i; j<= 2*i-1; ++j)
			cout << "* ";
        
		for (int j = 0; j<i-1; ++j)
			cout << "* ";

        cout << endl;
	}
	return 0;
}

你可能感兴趣的:(C++编程,算法,C++,打印三角形,循环练习)