用C程序编写一个程序,用数字打印出镜像的直角三角形图案

用C程序编写一个程序,用数字打印出镜像的直角三角形图案_第1张图片

一、问题分析

需要打印一个10行的数字金字塔,具有以下特征:

  1. 右对齐结构
  2. 每行包含:
    • 递减的空格数量(实现右对齐)
    • 递增的数字序列(从1开始到当前行号)
二、关键规律
  1. 行号(i):1~10
  2. 空格数量 = 10 - i
    • 第1行:9空格(10-1)
    • 第2行:8空格(10-2)
    • 第10行:0空格
  3. 数字部分 = 1到i的连续数字
    • 第1行:1
    • 第2行:12
    • 第10行:12345678910
三、代码实现解析
#include 
int main()
{
    int i, j;
    // 外层循环控制行数(1~10)
    for (i = 1; i <= 10; i++)
    {
        // 打印空格(右对齐)
        for (j = 0; j < 10 - i; j++)
        {
            printf(" ");
        }
        // 打印数字序列(1~i)
        for (j = 1; j <= i; j++)
        {
            printf("%d", j);
        }
        printf("\n"); // 换行
    }
    return 0;
}
四、执行过程示例(以i=3为例)
  1. 空格计算:10-3=7
    • 打印:" "(7空格)
  2. 数字打印
    • j=1 → 打印"1"
    • j=2 → 打印"2"
    • j=3 → 打印"3"
  3. 完整行输出
    • 123(7空格+123)
五、完整输出结果
         1
        12
       123
      1234
     12345
    123456
   1234567
  12345678
 123456789
12345678910
六、复杂度分析
项目 说明
时间复杂度 O(n²)(精确操作次数:155次)
空间复杂度 O(1)(仅用2个整型变量)
七、特殊处理说明
  • 第10行的数字10:当i=10时,内层循环会打印1~10共10个数字
  • 对齐效果:因数字10占两位,最后一行的对齐会比其他行多1字符宽度
八、变形建议
  1. 左对齐版本
   // 删除空格打印循环
   for(j=1; j<=i; j++) printf("%d",j);
  1. 字母金字塔
   printf("%c", 'A'+j-1); // 打印A~Z
  1. 倒金字塔
   for(i=10; i>=1; i--) {
       for(j=0; j<10-i; j++) printf(" ");
       for(j=1; j<=i; j++) printf("%d",j);
       printf("\n");
   }

这个数字金字塔案例展示了:

  1. 如何通过循环控制数字序列
  2. 使用空格实现右对齐效果
  3. 处理多位数时的对齐特性
  4. 基础的循环嵌套编程模式

你可能感兴趣的:(用C程序编写一个程序,用数字打印出镜像的直角三角形图案)