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

图 1:输出结果
根据题意,总共输出 n 行,第 i 行中首先输出(n-i)个空格,然后输出 i 个
代码清单 1:输出由“*”构成的 n 行 n 列的图形
运行结果为:
图 2 展示了代码清单 1 在运行过程中变量 i 和 j 的变化情况。

图 2:代码清单 1 中变量 i 和 j 的变化情况
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。

图 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 的变化情况。

图 2:代码清单 1 中变量 i 和 j 的变化情况
知识点总结
- 如果想循环特定的次数,就使用嵌套的 for 循环语句。
- 想通过循环来递增或递减变量时,就可以使用 for 循环。
- 嵌套在内层的 for 循环语句要执行外层循环变量 i 所指定的次数。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。