题目说的每一行都有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)
因篇幅问题不能全部显示,请点此查看更多更全内容