#include <stdio.h>
#include <conio.h>
int fact(int x);
int coeff(int y);
int main(){
int n,i,j,k;
printf("\nENTER THE POWER:");
scanf("%d",&n);
for (i=0;i<=n;i++){
for(k=n;k>i;k--){
printf(" ");
}
printf("%4d",coeff(i));
printf("\n");
}
getch();
}
int fact(int x){
int a , f=1 ;
for (a=x;a>0;a--){
if(x==0){
return 1;
}
return f*=a;
}
}
int coeff(int y){
int m ;
for(m=0;m<=y;m++) {
return (fact(y))/(fact(m)*fact(y-m));
}
}
我是C编程的新手。我最近开始使用C打印图案。我自己做了 Pascal的三角形的上述编码。但是我的代码在 CODE BLOCKS 编辑器中没有给出正确的答案。我知道网站上对此有解决方案。但是我想发展自己的推理(尽管很长)。但是我在这里找不到错误。有人可以帮我吗?
谢谢...
答案 0 :(得分:1)
以下解决方案包括纠正代码中的错误以及一些改进:
1)使用getchar
中的stdio.h
而非非标准getch
中的conio.h
。
2)coeff
函数不需要for
循环。
3)fact
函数将完全计算阶乘,然后才返回值。
4)主回路中包含另一个for
循环,可在一行中输出幂的所有系数。
#include <stdio.h>
int fact(int x);
int coeff(int n, int y);
int main(){
int n,i,j,k;
n = i = j = k = 0;
printf("\nENTER THE POWER:");
scanf("%d",&n);
for (i=0;i<=n;i++){
for(k=n;k>i;k--){
printf(" ");
}
for(j=0;j<=i;j++){
printf("%4d",coeff(i, j));
}
printf("\n");
}
getchar();
}
int fact(int x){
int a , f=1 ;
if(x==0){
return 1;
}
for (a=x;a>0;a--){
f*=a;
}
return f;
}
int coeff(int n, int y){
return (fact(n))/(fact(y)*fact(n-y));
}
输出:
a.exe
ENTER THE POWER:5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
a.exe
ENTER THE POWER:6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
a.exe
ENTER THE POWER:7
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1