C语言的杨辉三角输出前10行,求大神解答一下我的程序到底哪里错了
答案:6 信息版本:手机版
解决时间 2019-10-06 21:04
已解决
2019-10-06 03:15
#include "stdio.h"
void main()
{
int a[10][10]={{1}};
int i,j;
for(i=0;i<=9;i++)
{
for(j=0;j<=9;j++)
if(i=j) printf("\n");
else a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%d",a[i][j]);
}
printf("\n");
return 0;
}
最佳答案
2019-10-06 03:34
1 效果图
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
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
请按任意键继续. . .
2 源代码:
#include
#include "stdlib.h"
int main()
{
int a[11][11],i,j;
a[0][0] = 1;
a[1][0] = 1;
a[1][1] = 1;
for(i=2;i<=10;i++)
{
a[i][1] = 1;
a[i][i] = 1;
for(j=2;j
a[i][j] = a[i-1][j-1]+a[i-1][j];
}
for(i=1;i<=10;i++)
{
for(j=1;j<=i;j++)
printf("%3d ",a[i][j]);
printf("\n");
}
system("pause");
return 0;
}
3、 思路
1:
a[0][0] = 1;
a[1][0] = 1;
a[1][1] = 1;
三角的前3个元素都为1
2:数组的对角线上的元素和第一列元素都为1
所以
a[i][1] = 1;
a[i][i] = 1;
3:a[i][j] = a[i-1][j-1]+a[i-1][j];
其它的元素都等于两个肩上的元素之和
好运!
全部回答
1楼
2019-10-06 07:57
函数main 声明为 void
所以不应该有 renturn 0;
if
else 排版也不对.
应该尽量使用
if (..)
{
执行.
}
else
{
执行.
}
数组 a 初始化方式也不对.
2楼
2019-10-06 06:53
#include "stdio.h"
void main()
{
int a[10][10]={0};
a[0][0]=1;
int i,j;
for(i=1;i<=9;i++) //从1开始
{
for(j=0;j<=9;j++){
if(i==j) printf("\n"); //你写成一个等号
else {
if(j==0) //没有判断J=0的情况,会导致数组下标为-1
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
if(a[i][j]!=0) // 为零不输出
printf("%d ",a[i][j]);
}
}
printf("\n");
return 0;
}
3楼
2019-10-06 05:47
if(i=j) printf("\n"); 这行的等于判断应该是用两个等号。。
另,你没有在j==0和i==j的时候赋值边界的1
然后,似乎if(i=j) printf("\n");的输出回车也是不需要的
4楼
2019-10-06 05:04
它们骗你的,把分给我吧。
#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");
}
}
5楼
2019-10-06 04:17
未格式化输出的:(粘过来就没缩进了)
你的我不大好改啊,比较一下吧
#include "stdio.h"
void main()
{
int a[10][10]={{1}};
int i,j;
for(i=0;i<=9;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<=9;i++)
{
for(j=1;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
printf("%d",a[i][j]);
}
}
}
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯