新手呢。大侠帮帮忙咯!

来源:百度知道 编辑:UC知道 时间:2024/06/09 06:58:26
写一个程序输出下列排列的数字
4
3 7
2 6 9
1 5 8 10能不能每一步给出详细的讲解,我对for循环还不是很懂,谢谢啦,谢谢!!!
4的位置搞错了,应该是一个三角形,大家应该一看也知道的,呵呵。。

#include <stdio.h>
#include <stdlib.h>

void output(int n);

int main(int argc, char **argv)
{
int n = 0;

printf("Input number which you want to putout:");
scanf("%d", &n);

output(n);

return 0;
}

void output(int n)
{
int i = 0, c = 0, s = 0, o = 0; //i用于输出n行,c用于每行两数间增加值(如1 5 8 10 分别差值为4 3 2 ), s用于计算每行个数, o用于计算对应输出值用
for(i = n; i > 0; i--)
{
o = i; //当前行最前面一个数值
c = n; //第一个差值为n
s = c - i; //计算每行个数,个数为(s+1个)
do
{
printf(" ");
}while(s++ < n);//以上几行至此输出空格,以对齐
s = c - i; //个数
do
{
printf("%d ", o);
o += c--; //计算当前值
}while(--s >= 0 );
printf("\n"); //
}
}