您的位置:

c语言杨辉三角不用数组,c++杨辉三角怎么用数组写出来

本文目录一览:

杨辉三角,c语言编程,数组解决

#includestdio.h

void main()

{

int a[10][10];

int i,j;

for(i=0;i10;i++)

{

for(j=0;j=i;j++)//循环的控制出问题

{

if(j==0||j==i)

{

a[i][j]=1;

}

else

{

a[i][j]=a[i-1][j]+a[i-1][j-1];

}

printf("%-5d",a[i][j]);

}

printf("\n");

}

}

C语言初学者 关于输出前十行杨辉三角

你加了很多多余的括号,把你自己弄糊涂了吧,哈

printf输出x1/x2的位置不对,应该放在最里面的循环里

我把主循环体给你稍微改了一下就好了

for(m=1;

m=10;

m++)

{

for(n=0;

n=m;

n++)

{

if(n==m||n==0)

x2=f1(m);

else

x2=f2(m,n);

x1=f1(m);

printf("%3d",

x1/x2);

}

printf("\n");

}

两个计算阶乘的函数都没问题

用c语言打印杨辉三角 非数组,我只求过程,不求答案

不知道我这样解释能不能说清楚:

可以看看杨辉三角的定义,百科里介绍了一个杨辉三角的第六个性质,具体是:

6、第n行的第1个数为1,第二个数为1×(n-1),第三个数为1×(n-1)×(n-2)/2,第四个数为1×(n-1)×(n-2)/2×(n-3)/3…依此类推。

而程序中的i是表示第i行,那么上面的性质6里的n就是程序中的i,而k是保存了1×(n-1)×(n-2)/2×(n-3)/3...的值,其中(n-1)、(n-2)、(n-3)...中的1,2,3...是j的值。

比方说,一开始k=1,执行了一次内循环后,k=k*(i-j)/j 就是k=1×(n-1)/1;那么第二次循环执行k=k*(i-j)/j,就等于执行了1×(n-1)×(n-2)/2……依次类推,应该能明白了吧!

c语言编程,打印杨辉三角,要求打印的行数由键盘输入,并且不得使用二维数组

#includestdio.h 

#include"string.h" 

int a[10000];        //容器,由n*(n+1)/2=10000可知,n=141 

int b=3,CR,i;        //b为当前行数,CR为要求显示的行数,i为循环数

 int YHSJ(int CR) 

{

     a[1]=a[2]=1;        //前两行数值少且全为1,故直接输出

     printf("%d\n",a[1]);

     printf("%d %d\n",a[1],a[2]);

     while(b=CR)        //从第三行开始判断

     {

         for(i=b;i=2;i--)//从倒数第一个数开始加

         {

             a[i]=a[i]+a[i-1];        //杨辉三角的规律,没有值的数组默认为0

         }         

for(i=1;i=b;i++)        //显示循环

         {

             printf("%d ",a[i]);

         }

         printf("\n");        //显示完一行换行

         b++;        //下一行

     }

     return 0;

 }

 void main()

 {

     printf("请输入要显示的行数(3~141):");

     scanf("%d",CR);

     YHSJ(CR);

 }

C语言利用一维数组编写杨辉三角

#include stdio.h

#define N 10 /* 要打印的层数 */

int main(void)

{

int arr[N]; /* 用于保存生成的杨辉三角的每一行的值 */

int i, j;

arr[0] = 1; /* 杨辉三角的第一层 */

/* 先把第一层打印出来 */

printf("%5d\n", arr[0]);

arr[1] = arr [0] = 1;//这样写是为了表明算法。

printf("%5d%5d\n", arr[0], arr[1]);

/* 不断地求杨辉三角的每一层 */

for (i = 2; i N; i++) /* i代表当前层用到的arr的最大下标 */

{

arr[i] = arr[i-1]; /* 把最外边的1外移一位 */

for(j = i-1; j0; j--)//每一行的a[0],始终为1,不用计算。

/* 用杨辉三角的性质求出层里里面的每一个数 */

{

/* 杨辉三角的性质就是这句 */

arr[j] = arr[j - 1] + arr[j];

}

/* 求出一行后,马上打印出此行 */

for (j = 0; j = i; j++)

{

printf("%5d",arr[j]);

}

printf("\n");

}

return 0;

}