C语言的杨辉三角输出前10行,求大神解答一下我的程序到底哪里错了
#include"stdio.h"voidmain(){inta[10][10]={{1}};inti,j;for(i=0;i<=9;i++){for(j=0;j<=9;...
#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;
} 展开
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;
} 展开
展开全部
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<stdio.h>
#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<i;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
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<stdio.h>
#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<i;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];
其它的元素都等于两个肩上的元素之和
好运!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
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;
}
更多追问追答
追问
亲,可以详细解释下我错的地方么?
追答
写了= =
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数main 声明为 void
所以不应该有 renturn 0;
if
else 排版也不对.
应该尽量使用
if (..)
{
执行.
}
else
{
执行.
}
数组 a 初始化方式也不对.
所以不应该有 renturn 0;
if
else 排版也不对.
应该尽量使用
if (..)
{
执行.
}
else
{
执行.
}
数组 a 初始化方式也不对.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include "stdio.h"
int main()
{
int a[10][10];
int i,j;
for(i=0;i<=9;i++)
{
for(j=0;j<=i;j++)
{
if(j==0||i==j)
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%5d",a[i][j]);
}
printf("\n");
}
return 0;
}
int main()
{
int a[10][10];
int i,j;
for(i=0;i<=9;i++)
{
for(j=0;j<=i;j++)
{
if(j==0||i==j)
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%5d",a[i][j]);
}
printf("\n");
}
return 0;
}
更多追问追答
追问
你的回答最简洁直接了。。很对我胃口。。哎,但是大家都回答。。。我应该采纳谁好呢
追答
呵呵,让我说当然选我了,可以加我HI友,以后多交流,互相学习。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(i=j) printf("\n"); 这行的等于判断应该是用两个等号。。
另,你没有在j==0和i==j的时候赋值边界的1
然后,似乎if(i=j) printf("\n");的输出回车也是不需要的
另,你没有在j==0和i==j的时候赋值边界的1
然后,似乎if(i=j) printf("\n");的输出回车也是不需要的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询