我要输出杨辉三角,怎么改正?谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/19 13:25:19
代码:

#include<stdio.h>
void main()
{
int i,t,a=1,b=1,c=1,d,t1,t2,i1;
for(i=1;i<6;i++)
{
for(t=1;t<i+1;t++)
{
i1=i;
t1=t;
t2=i-t;
while(i1>0)
{
a=a*t1;
t1--;
}
while(t1>0)
{
b=b*t1;
t1--;
}
while(t2>0)
{
c=c*t2;
t2--;
}
printf("%d ",a/(b*c);
}
printf("\n");
}

getchar();
}
错误提示:
C:\Dev-Cpp\cpp\Untitled4.c: In function `main':
C:\Dev-Cpp\cpp\Untitled4.c:27: error: syntax error before ';' token
C:\Dev-Cp

你使用的是C++编译器编译C程序。在C++中,要求主函数必须有int返回值。
int main()
{
.....
return 0;
}
这样。0表示正确,其它值表示不同类型的错误。
这个是第一个错误的原因。
第二个。
while(t2>0)
{
c=c*t2;
t2--;
}
printf("%d ",a/(b*c); //你这里少了一个括号
}
printf("\n");
}

另外,全局变量d也没有用上。
所以可以删除掉。
*问题分析与算法设计
杨辉三角形中的数,正是(x+y)的N次方幂展开式各项的系数。本题作为程序设计中具有代表性的题目,求解的方法很多,这里仅给出一种。
从杨辉三角形的特点出发,可以总结出:
1)第N行有N+1个值(设起始行为第0行)
2)对于第N行的第J个值:(N>=2)
当J=1或J=N+1时:其值为1
J!=1且J!=N+1时:其值为第N-1行的第J-1个值与第N-1行第J个值
之和
将这些特点提炼成数学公式可表示为:
1 x=1或x=N+1
c(x,y)=
c(x-1,y-1)+c(x-1,y) 其它

本程序应是根据以上递归的数学表达式编制的。
*程序说明与注释
#include<stdio.h>
int main()
{
int i,j,n=13;
printf("N=");
while(n>12)
scanf("%d",&n); /*控制输入正确的值以保证屏幕显示的图形正确*/
for(i=0;i<=n;i++) /*控制输出N行*/
{
for(j-0;j<24-2*i;j++) printf(" ")