在C中输入此三角形的高度时,打印Pascal三角形

在C中输入此三角形的高度时,打印Pascal三角形,c,C,你能帮我找到代码中的错误吗?那是因为你在factorial()函数中编写了错误的逻辑 for(b=1;b3,循环终止,您得到了正确的答案!! 但如果a=4,那么在第一次迭代中,a=4*1等于4,在第二次迭代中,a=4*2等于8,大于4,因此循环不会进一步执行,您得到了错误的答案! 正确的逻辑是,声明另一个int变量并将其初始化为1,以存储“a”的乘积和变量本身,即 for (b=1;b<=a;b++) a=a*b;//also , you have to return the va

你能帮我找到代码中的错误吗?

那是因为你在factorial()函数中编写了错误的逻辑

for(b=1;b3,循环终止,您得到了正确的答案!!
但如果a=4,那么在第一次迭代中,a=4*1等于4,在第二次迭代中,a=4*2等于8,大于4,因此循环不会进一步执行,您得到了错误的答案!
正确的逻辑是,声明另一个int变量并将其初始化为1,以存储“a”的乘积和变量本身,即

for (b=1;b<=a;b++)
    a=a*b;//also , you have to return the value of a here!
intfac=1;

for(b=1;by您需要在阶乘函数中
返回a;
。您的
阶乘
函数完全错误。您正在
for
循环中修改
a
,然后将
b
与修改后的值进行比较。您将得到各种整数溢出。那么我应该如何修复它?
1
1 1
1 3 1
1 0 0 1
1 0 0 0 1
1 0 0 0 0 1
for (b=1;b<=a;b++)
    a=a*b;//also , you have to return the value of a here!
 int fac=1;
    for(b=1;b<=a;b++){
        fac = fac*b;
    }
    return fac;
#include<stdio.h>
int factorial(int a){
int b=0;
if (a==0)
    return 1;
else{

   /* for(b=1;b<=a;b++){         
        fac = b*(factorial(b-1));// another way to find factorial using recursion
return fac;    
}*/
    int fac=1;
    for(b=1;b<=a;b++){
        fac = fac*b;
    }
    return fac;
  }

}   //factorial of a

int pascal(int i, int j){

    return factorial(i) / (factorial(j) *factorial(i-j));
 }
int main()
{
  int k,n,m,q;

   printf("Input m: ");
   scanf("%d", &m);

   for(k=0;k<m;k++){
    for(n=0;n<=k;n++)
        printf("%d ", pascal(k, n));

    printf("\n");
   }
   return 0;  // a good habit to add return 0, to let the compiler know that
             // the code is executed completely    
}