前言
打印输出菱形所遇到的多重循环问题
一、多重循环的执行结果是什么
外循环给定一值时,内循环将完整的执行一遍
二、遇到的问题
1.变量初值与条件判断如何设置
设置初值时应明白的简单逻辑:当i=0时,首先z会从1~9打印输出9个空格(z>i,所以z最后取1),然后y=0(y<=i)打印输出一个* ;当i=0时,首先z会从9~2打印输出8个空格(z>i,所以z最后取2),然后y=1(y<=i)打印输出两个* 。既每次i改变时,j与z完整的执行一遍
#include<stdio.h>
int main()
{
int i,j,z;
for(i=0;i<10;i++)
{
for(z=9;z>i;z--)
printf(" ");
for(j=0;j<=i;j++)
printf("* ");
printf("\n");
}
for(i=0;i<9;i++)
{
for(z=0;z<=i;z++)
printf(" ");
for(j=9;j>i;j--)
printf("* ");
printf("\n");
}
return 0;
}
2.变量设置
如下设置两组变量,分为菱形上下部分的两个循环,与1的代码可以实现等价的效果,但1会是更优的选择,所占内存与运行时间均较小。所以我们尽量只设置一组变量
#include<stdio.h>
int main()
{
int i,j,z,i_,j_,z_;
for(i=0;i<10;i++)
{
for(z=9;z>i;z--)
printf(" ");
for(j=0;j<=i;j++)
printf("* ");
printf("\n");
}
for(i_=0;i_<9;i_++)
{
for(z_=0;z_<=i_;z_++)
printf(" ");
for(j_=9;j_>i_;j_--)
printf("* ");
printf("\n");
}
return 0;
}
总结
1.了解多重循环的执行结果,懂得设置打印输出菱形的初值与条件判断
2.了解如何优化程序