实例八:数字金字塔
#include <stdio.h>
int main(void)
{
int i, j;
for(i=1;i<=9;i++) /for是对于列的控制,每一列算一个周期循环/
{
for(j=1;j<=20-2i;j++) /for用于控制空格的输出在每一行的数字前面输出对应20-2i个空格/
/当改变了第一个for中i的最大值可能会导致没有达到相应的效果/
printf(" “);
for(j=1;j<=i;j++) /表示将第i行左端的数从1一直写到i/
printf(” %d",j);
for(j=i-1;j>=1;j–) /表示将第i行右端的数从i-1一直写到1/
printf(" %d",j);
printf("\n"); /结束for循环后换行/
}
return 0;
}
/改进程序:内部循环合并/
#include<stdio.h>
#include<math.h>
int main(void)
{
int i, j, k;
for(i=0;i<9;i++)
{
for(k=1;k<=9-i;k++)
printf(" “);
for(j=1;j<=i*2+1;j++)
printf(”%d “,(i+1)-abs(i-j+1)); 函数求绝对值来输出
printf(”\n");
}
return 0;
}
心得:
要得到一个有规律的排列,一定要会使用for循环
- 来分别控制行列,左右方各个数的输入