目录
1.题目
题目描述
给出10个数,要求以金字塔形式输出,10个数按顺序摆放在金字塔中,依次为从上到下,从左到右
输入说明
10个大于等于0且小于10的整数
输出说明
金字塔
输入样例
5 6 2 3 8 9 1 4 0 7
输出样例
注意
每一行最后的空格要加上。,即每一行都有7个字符
2.自解
分析
题目说的每一行都有7个字符其实不准确,如果加上\n则每行有8个字符
非数字和\n的地方为空格
外循环控制行,内循环负责打印四个部分:红、橙、绿和蓝
红色区域的打印
第一行打印3个空格;第二行打印2个空格;第三行打印1个空格;第四行打印0个空格;
因此可以写出
for (space = 4 - line; space > 0; space--)
printf(" ");
橙色区域的打印
注意:不要想着怎么单独打印数字和数字之间的空格,处理起来会非常麻烦
因此循环一次,打印一个数字和一个空格
第一行打印(一个数字和一个空格)*1;第二行打印(一个数字和一个空格)*2;
第三行打印(一个数字和一个空格)*3;第四行打印(一个数字和一个空格)*4.
发现*1,*2,*3,*4跟随行数line
因此可以写出
for (pra = 1; pra <= line; pra++)
{
printf("%d ", a[++k]);
}
注意:在打印的同时还要调整下标:a[++k]
绿色区域的打印
第一行打印2个空格;第二行打印1个空格;第三行打印0个空格;第四行打印0个空格;
因此可以写出
for (space = 4 - line; space > 1; space--)
printf(" ");
line==3或line==4时,上述循环根本不进行
蓝色区域的打印
内层的三个循环结束后再补一个\n即可
因此可以写出
printf("\n");
代码
不用动脑筋的代码
#include<stdio.h>
int main()
{
int a[10], i;
for (i = 0; i <= 9; i++)
{
scanf("%d", &a[i]);
}
printf(" %d \n", a[0]);
printf(" %d %d \n", a[1], a[2]);
printf(" %d %d %d \n", a[3], a[4], a[5]);
printf("%d %d %d %d\n", a[6], a[7], a[8], a[9], a[10]);
return 0;
}
能锻炼思维的代码
#include<stdio.h>
int main()
{
int a[10], i=0, k=-1, line=0, space=0, pra=0;
for (i = 0; i <= 9; i++)
{
scanf("%d", &a[i]);
}
for (line = 1; line <= 4; line++)
{
for (space = 4 - line; space > 0; space--)
printf(" ");
for (pra = 1; pra <= line; pra++)
{
printf("%d ", a[++k]);
}
for (space = 4 - line; space > 1; space--)
printf(" ");
printf("\n");
}
}
注:pra的全称:print a(打印数组a)
标签:10,供题,space,打印,C语言,空格,printf,line,E45 From: https://blog.csdn.net/2401_85828611/article/details/143771280