问题描述
- C语言杨辉三角实现...................
-
int a[10][10];
int i,j,h;scanf_s("%d",&h);//想打印的行数 for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) if (j>i) a[i][j] = 0;// 对列大于行的元素清零 for (i = 0, j = 0; i < 10; i++) a[i][0] = 1;//把第一列全部变成1 for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) if (j = i) a[i][j] = 1;//把对角线的元素全变成1 for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) if (i>0 && j>0) a[i][j] = a[i - 1][j] + a[i - 1][j - 1];//只要不是第一行的或者第一列的全都按这个规律,这个元素等于它上面的加左上面的元素。 for (i = 0; i < h + 1; i++) { for (j = 0; j < h+1; j++) { if (i>=j) printf("%d", a[i][j]); } printf("n"); }//把每一行都打印出来,前提是行大于或等于列。 请大神们不吝赐教,哪错了
解决方案
#include
int main(){
int a[10][10]={0};
int i,j,h;
scanf("%d",&h);//想打印的行数
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
if (j>i)
a[i][j] = 0;// 对列大于行的元素清零
for (i = 0,j=0; i < 10; i++)
{
a[i][0] = 1;//把第一列全部变成1
}
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
if (j == i)// **已改正 == 原为 j=i 应该为 j==i**
a[i][j] = 1;//把对角线的元素全变成1
}
}
for (i = 0; i < 10; i++){
for (j = 0; j < 10; j++){
if (i>0 && j>0&& i>=j)/**/只打印对角线下面 **
a[i][j] = a[i - 1][j] + a[i - 1][j - 1];//只要不是第一行的或者第一列的全都按这个规律,这个元素等于它上面的加左上面的元素。
}
}
for (i = 0; i < h + 1; i++)
{
for (j = 0; j < h+1; j++)
{ if (i>=j)
printf("%dt", a[i][j]);
}
printf("n");
}//
}
注意相等与赋值的区别,= 与 == 是不同的
解决方案二:
杨辉三角形的每一项,都等于CMN(M选N的组合数)
可以直接计算,没必要开数组
解决方案三:
http://wenku.baidu.com/view/8a86a44cf7ec4afe04a1df47.html
http://blog.csdn.net/milkcu/article/details/8850349
时间: 2024-08-04 14:00:14