C语言,只有for循环编写杨辉三角,答得好加分。

2024-12-04 18:06:00
推荐回答(2个)
回答1:

例如:
1

1 1

1 2 1

1 3 3 1
说明:
#include
int main(void)
{
long i,j,n,k;
printf("杨辉三角:\n请输入行号,回车:");
scanf("%ld",&n);
for(i=1;i<=n;i++)
{
k=1;
for(j=1;j{
printf("%ld ",k); //从第2行开始每次进入该循环第一次打印的是每行开头的1
k=k*(i-j)/j; //这个用于计算第二行开始每行第一个1和最后一个1之间的数,例如第3行的2,第4
//行的 3 3
}
printf("1\n");//这个用于打印每行最后一列的1
}
return 0;
}

回答2:

1、以10层为例。定义一个int数组,赋初值为0,1,0...这样就把当前层的计算简化为用上一层的相邻2数相加,在输出当前数的同时把它存入数组对应位置,为下一层计算使用。

2、例程:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#define N 10
int main(void){
    int i, j, a[N+1]={0};
    printf("Yang-Hui triangle 10 layer:\n");
    for(*(a+1)=i=1;i<=N;i++){//利用本层某位上一层左右2位之和求得
        printf("%*c",1+((N-i)<<1),' ');//计算并移动到屏幕上合适的位置
        for(j=i;j>=1;j--)
            printf("%4d",*(a+j)+=*(a+j-1));//输出当前数并存入数组,供下一层计算用
        printf("\n");
    }
    return 0;
}