输出图形
(1)问题描述
编程输出如下图形(要求以第30列为对称轴,即菱形的顶点在第30列)
(2)源代码
#include <stdio.h>
int main()
{
int n = 13;
int i;
int k;
for (i = 0 ; i < n ; i++)
{
int j = i < n / 2 ? i + 1 : n - i;
for ( k = 0; k < 30 - j; k++)
printf(" ");
for ( k = 0; k < j * 2 - 1; k++)
printf("%d", j);
printf("\n");
}
return 0;
}
(3)代码思路
-
首先,声明一个整数变量
n
,并将其赋值为13,表示菱形的高度。 -
然后,声明两个整数变量
i
和k
,用于控制循环。 -
接着,使用一个
for
循环,从0开始,每次加1,直到n
为止,即遍历菱形的每一行。在循环中,执行下面的代码:- 声明一个整数变量
j
,并根据i
的值赋值,表示菱形每一行的数字。如果i
小于n/2
,即在菱形的上半部分,就将j
赋值为i+1
;如果i
大于等于n/2
,即在菱形的下半部分,就将j
赋值为n-i
。 - 使用一个
for
循环,从0开始,每次加1,直到30-j
为止,即打印菱形每一行的空格。在循环中,使用printf
函数输出一个空格。 - 使用一个
for
循环,从0开始,每次加1,直到j*2-1
为止,即打印菱形每一行的数字。在循环中,使用printf
函数输出j
的值。 - 使用
printf
函数输出一个换行符,表示结束当前行的打印。
- 声明一个整数变量
-
最后,返回0,表示程序正常结束。