这是一个C语言 for 循环嵌套的示例:给定一个自然数 n,在屏幕输出 n 行 n 列图形(见图 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 的变化情况。