C++打印三角形

如图:要求在控制台项目下使用C++语言打印如下图形。

    

这是一个由不同数量*符号,不同数量空格符,换行符所排列成的8列横线,按照规律上下排列组成的正三角形。

①首先分析我们需要打印的内容:

  1. 除了最后一行(第八行)外,第一行到第七行组成三角形的*符号前都有数量不一的空格符。
  2. 组成三角形的*符号。
  3. 每一行与下一行之间的换行符。

②考虑每一行需要打印的个数(空格符,*符号,换行符):

    1.首先是空格符,根据对图形的观察可以得到 空格符数量 和 行号 的关系:

    当前行号    当前行空格符数量

      1          7

      2          6

      3          5

      4          4

      5          3

      6          2

    ....        ....

由此得出公式:当前空格符数量 = 最大行号 - 当前行号

    2.接下来是*符号的个数,同样根据对图形的观察可以得到 *符号数量 和 行号 的关系:

    当前行号    当前行*符数量

      1          1

      2          3

      3          5

      4          7

      5          9

      6          11

     由此得出公式:当前*符数量 = 当前行号 * 2 - 1

    3、最后是换行符,很明显除最后一行外其余每一行只需要一个换行符用来在打印完当前行的空格符和*符后换行即可。

③最后我们考虑什么习语可以完成打印:

    C++中的循环结构有三种while、do while、for,这里需要打印的内容个数已经确定,因此我们优先选择使用for循环来完成这一任务。

    上述需要打印的空格符、*符号、换行符数量都需要行号参与计算。

    我们声明一个int类型变量i来代表当前行号,使用 i替换上述公式:

    i行空格符数量 = 最大行号 - i

    i行*符数量 = i * 2 - 1

    i换行符数量:1

    得到如下代码:

        int i,j,k;

        for(i = 1;i <= 8;i++ ){  //该控制行决定了循环时的当前行号,依次对应三角形的1~8行。
          for(j = 1;j <= 8-i;j++){  //该控制行决定了打印空格符的数量,i决定行号。
            printf(" ");
          }
          for(k = 1;k <= i*2-1;k++){  //该控制行决定了打印*符号的数量,i决定行号。
            printf("*");
          }
          printf("\n");  //每行打印一个换行符。
        }

    最终的代码不是关键,应该关注看到问题时候的分析过程。

时间: 2024-10-18 07:56:24

C++打印三角形的相关文章

如何根据用户需要打印三角形

需求:如何根据用户需要打印三角形 triangle.py代码如下: x=int(input('Please input number: ')) i=1 j=1 while i<=x: j=1 while j<=x-i : print(' ',end='') j+=1 while j<=x+i-1: print('*',end='') j+=1 print() i+=1 输出结果如下:

阶乘、斐波那契数列、打印三角形(*)递归,冒泡排序

1.用递归求阶乘 5*4*3*2*1 static int Show(int num)//Show(5) { if (num <= 0) return 1; else return num*Show(num-1); } 2.斐波那契数列,1.1.2.3.5.8.13 求出第三十位 static int Show(int num)// Show(30) { if (num == 0 || num < 0) return 0; else if (num == 1 || num == 2) retu

Python中使用循环语句打印三角形、菱形

前言:在学习开发语言循环语句的使用过程中,经常会打印各种形状来验证对循环语句的熟练掌握程度,接下来就使用python来打印多种形状练习. 如下示例中:变量i用于控制外层循环(图形行数),j用于控制空格的个数,k用于控制星号(*)的个数 1. 打印三角形  1.1 打印直角三角形 #/usr/bin/python rows = int(raw_input('please input a rows:')) i=j=k=1 if rows >= 3: for i in range(0,rows+1):

打印三角形

package com.print.xingzhuang; public class Print_SanJiaoXing { public static void main(String[] args) { System.out.println("------------第一行5个------------"); for (int i = 0; i < 5; i++) { for (int j = 5; j > i; j--) { System.out.print("

for ()语句-打印三角形

15-07-03 for ()语句-打印三角形 1. Console.Write("请输入要打印几行:"); int a = Convert.ToInt32(Console.ReadLine()); for (int i = 1; i <= a; i++) { for (int j = 1; j <= i; j++) { Console.Write("☆"); } Console.WriteLine(); } 2. Console.Write("

Java星星打印三角形小结

1.直角三角形的打印        2.倒直角三角形打印           3.等腰三角形的打印       4.倒等腰三角形打印                                   5.打印空心三角形                6.打印实心菱形                                     7.打印空心菱形                            

利用for循环打印三角形,菱形,字母等

三角形: # 打印等腰三角形 # 控制行 for i in range(1,6): #更改打印起始位置 for k in range(1,6-i): print(end=" ") #控制列,规则是第一行一列,第二行二列 for j in range(6-i,6): print("*",end = " ") print() print("="*20) # 空心 # 控制行 for i in range(1,6): #更改打印起始

for语句之打印三角形问题

1.左下角直角三角形 Console.Write("请输入要打印几行:"); int a = Convert.ToInt32(Console.ReadLine()); for (int i = 1; i <= a; i++) { for (int j = 1; j <= i; j++) { Console.Write("☆"); } Console.WriteLine(); } 2.左上角直角三角形 Console.Write("请输入要打印几

15-07-03 for ()语句-打印三角形

1. Console.Write("请输入要打印几行:"); int a = Convert.ToInt32(Console.ReadLine()); for (int i = 1; i <= a; i++) { for (int j = 1; j <= i; j++) { Console.Write("☆"); } Console.WriteLine(); } 2. Console.Write("请输入要打印几行:"); int a