【问题描述】编程打印用数字构成的菱形图案,菱形上半部分的行数n( 1<n<10 )从键盘输入,总行数为2n-1。图案的样式按下面的样例。
【输入形式】从键盘输入包括中间一行在内的菱形上半部分的行数n( 1<n<10 )。
【输出形式】输出用数字构成的菱形图案,样式按下面的样例,其中各数字间用1个空格间隔,最中间最长的一行的起始数字1位于第1列。
【样例输入】4
【样例输出】
1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 2 1 1 2 1 1
源代码
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
// 打印上半部分
for (int i = 1; i <= n; i++) {
// 打印空格
for (int j = 1; j <= n - i; j++) {
printf(" ");
}
// 打印递增数字
for (int j = 1; j <= i; j++) {
printf("%d ", j);
}
// 打印递减数字
for (int j = i - 1; j >= 1; j--) {
printf("%d ", j);
}
printf("\n");
}
// 打印下半部分
for (int i = n - 1; i >= 1; i--) {
// 打印空格
for (int j = 1; j <= n - i; j++) {
printf(" ");
}
// 打印递增数字
for (int j = 1; j <= i; j++) {
printf("%d ", j);
}
// 打印递减数字
for (int j = i - 1; j >= 1; j--) {
printf("%d ", j);
}
printf("\n");
}
return 0;
}
在这个程序中,我们首先通过键盘输入菱形上半部分的行数n。然后使用两个for循环来打印菱形的上半部分和下半部分。
对于上半部分,我们使用第一个for循环控制行数,第二个for循环用于打印每一行的空格和数字。首先打印空格(个数为n-i),然后打印递增的数字(从1到i),再打印递减的数字(从i-1到1)。
对于下半部分,同样使用两个for循环来打印每一行的空格和数字。空格的个数和上半部分相反,递增的数字和上半部分相同,递减的数字也相同。
注意:请确保输入的行数n满足1<n<10的条件,以避免菱形过大无法完整显示。
运行截图
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END