C语言输出n行n列星号

这是一个C语言 for 循环嵌套的示例:给定一个自然数 n,在屏幕输出 n 行 n 列图形(见图 1)。

输出结果
图 1:输出结果

问题分析

这是个打印图形问题,一般按行和列分别处理,找出每一行和每一列的规律,然后按行输出。

根据题意,总共输出 n 行,第 i 行中首先输出(n-i)个空格,然后输出 i 个。用变量 i 控制循环 n 次,输出 n 行;用变量 j 控制循环(n-i)次,输出(n-i)个空格;继续用变量 j 控制循环 i 次,输出 i 个

算法描述

1) 输入 n 的值;
2) 重复处理 n 行的操作(行号 i 从 1 至 n):
重复处理 n 列的操作(列号 j 从 1 至 n-i):输出空格“ ”;
重复处理 n 列的操作(列号 j 从 1 至 i):输出“*”;
输出换行符(表示该行结束);
3) 结束。


代码清单 1:输出由“*”构成的 n 行 n 列的图形
#include <stdio.h>
#include <stdlib.h>
int main( )
{
    int n,i,j;
    printf("输入一个整数:");
    scanf("%d",&n);
    for(i=1;i<=n;i++)         //控制行的输出
    {
        for(j=1;j<=n-i;j++)  //控制列的输出
            printf(" ");    //每一列打印n-i个空格
        for(j=1;j<=i;j++)    //控制列的输出
            printf("*");    //每一列打印i个“*”
        printf("\n");        //当前行结束,输出换行符
    }
    system("pause");
    return 0;
}

运行结果为:

输入一个整数:5
    *
   **
  ***
 ****
*****


图 2 展示了代码清单 1 在运行过程中变量 i 和 j 的变化情况。
代码清单 1 中变量 i 和 j 的变化情况
图 2:代码清单 1 中变量 i 和 j 的变化情况

知识点总结

  1. 如果想循环特定的次数,就使用嵌套的 for 循环语句。
  2. 想通过循环来递增或递减变量时,就可以使用 for 循环。
  3. 嵌套在内层的 for 循环语句要执行外层循环变量 i 所指定的次数。