给你一个java参考程吧,跟c语言差不多,你只把输入的地方改改就好了
static void yH(){
System.out.print("输入你要打印的杨辉三角行数:");
int n=SystemIn.nextInt();
int mat[][]=new int[n][];
int i,j;
for (i = 0; i < n; i++) {
mat[i] = new int[i + 1];
mat[i][0] = 1;
mat[i][i] = 1;
for (j = 1; j < i; j++) {
mat[i][j] = mat[i - 1][j - 1] + mat[i - 1][j];
}
}
for (i = 0; i < mat.length; i++){
for (j = 0; j < mat[i].length; j++)
System.out.print(" " + mat[i][j]);
System.out.println();
}
}
对杨辉三角的理解有点问题。
#include
int main()
#define m 10
#define n 10
{
int i,j;
int yang[m][n];
for( i = 0 ; i <= m ; i++ )
{
for( j = 0 ; j <= n ; j++ )
{
if( i == j || j == 0 )
/*这个判断条件不对,杨辉三角是每一行的第一个与最后一个是1,除了最上面一列,其他的都不是第n行的第n列是1,而是第n行第n+1列是1。应该改成if(j==0||j=i+1)*/
yang[i][j] = 1;
else
yang[i][j] = yang[i-1][j-1] + yang[i-1][j];
printf("%5d ", yang[i][j]);
}
if( j == i )
printf("\n");
}
return 0;
}
#include
void main()
{
int i,j,n=0,a[17][17]={0,1};
while(n<1 || n>16)
{
printf("请输入杨辉三角形的行数:");
scanf("%d",&n);
}
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
printf("%5d",a[i][j]);
}
printf("\n");
}
}
你加了很多多余的括号,把你自己弄糊涂了吧,哈
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");
}
两个计算阶乘的函数都没问题