首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

杨辉三角,该怎么处理

2012-06-03 
杨辉三角#include stdafx.h# include stdio.hint main(void){static int i, j,k, a[10][10]a[0][0]

杨辉三角
#include "stdafx.h"

# include <stdio.h>

int main(void)
{
 static int i, j,k, a[10][10];
 a[0][0] =1 ;
 for(k=0;k<10;k++)
{ for(i=k;i<=k;i++)
{ for(j=1;j<=k;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
 for(i=0;i<10;i++)
{for(j=0;j<=i;j++)
{ printf("%-5d",a[i][j]);}
 printf("\n");
}
 }
运行结果
1
0 1 
0 2 1
0 3 3 1
0 4 6 4 1
0 5 10 10 5 1
..........

为什么从第2行开始会出现0???















[解决办法]
?我们当时做的时候就是要有0呀,把0进栈的呀
[解决办法]

C/C++ code
#include <stdio.h>int main(void){    int i, j,k, a[10][10];    a[0][0]=1;    for(k=1;k<10;k++)    {         a[k][0]=a[k-1][0];        for(i=1;i<k;i++)            a[k][i]=a[k-1][i-1]+a[k-1][i];        a[k][k]=a[k-1][k-1];    }    for(i=0;i<10;i++)    {        for(j=0;j<=i;j++)            printf("%-5d",a[i][j]);        printf("\n");    }    system("pause");}
[解决办法]
你的我没看懂
这是百度的
C/C++ code
#include<stdio.h>#define M 10void main(){    int a[M][M],i,j;    for(i=0;i<M;i++)        for(j=0;j<=i;j++)        {            if(i==j||j==0)                a[i][j]=1;            else                a[i][j]=a[i-1][j]+a[i-1][j-1];            printf("%d  ",a[i][j]);            if(i==j)                printf("\n");        }}
[解决办法]
因为你的内层循环j是从1开始的啊,也就是从第2列开始的呀,第一列你没管
由于是你的数组是static int型,所有元素初始化为0

[解决办法]
另一种版本:
C/C++ code
#include <stdio.h>int factorial(int k){    int f = 1;    if(k == 0)    return 1;    for(int i = 1; i <= k; ++i)    {        f *= i;    }    return f;}int combination(int n, int m){    return factorial(n) / (factorial(m) * factorial(n - m));}int main(int argc, char* argv[]){    int row = 10;    for(int i = 0; i < row; ++i)    {        for(int j = 0; j <= i; ++j)        {            printf("%d\t", combination(i, j));        }        printf("\n");    }    return 0;} 

热点排行