怎么动态分配内存给这个二维数组?

ztwz 2004-04-24 11:36:16
我想用输入杨辉三角的行数n,输出各行系数!请问用malloc()这个函数要如何实现!下面是我的想法,但是显然不能通过编译!请大虾指点

main()
{
int i,j,n,*s;
printf("please input somes number:\n");
scanf("%d",&n);
s=(int *)malloc(n*n*sizeof(int));
for(i=0;i<n;i++)
{
s[i]=1;
s[i*n+i]=1;
}
for(i=3;i<n;i++)
for(j=2;j<i-1;j++)
s[i*n+j]=s[(i-1)*n+j]+s[(i-1)*n+(j-1)];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%8d",s[i*n+j]);
printf("\n");
}
}

只有s[i][0]和s[i][i]正确被赋值,其它的都不对,我每次输入6但结果都不一样,我是用的tc2.0编译的
下面是三次输入的结果:
please input somes number:
6
1 1 1 1 1 1
15491 1 -18417 1 13136 20672
22096 12264 1 2244 17655 1026
29696 -249 2164 1 22797 25729
-3326 -14337 1915 0 1 1285
-30464 2116 -12422 1915 2174 1
please input somes number:
6
1 1 1 1 1 1
-14789 1 1735 1166 1 5355
16003 1164 1 2376 1 1
1 1 1 1 15491 1
-18417 1 2 20672 1 12264
1 2244 3 20674 29696 1
please input somes number:
6
1 1 1 1 1 1
29952 1 804 -14789 1653 1735
1164 1 1 29696 -18417 1
13136 20672 22096 1 -31747 2244
17655 1026 -22768 -249 1 20968
22797 25729 -21742 -23017 1604 1
请大虾们帮我看看这个问题,这个问题偶菜鸟真的不知道哪儿出问题了!
...全文
119 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
angelo23 2004-04-24
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,n,*s;
printf("please input somes number:\n");
scanf("%d",&n);
s=(int *)malloc(n*n*sizeof(int));
for(i=0;i<n;i++)
{
s[i*n]=1;
s[i*n+i]=1;
}


for(i=2;i<n;i++)
for(j=1;j<i;j++)
s[i*n+j]=s[(i-1)*n+j]+s[(i-1)*n+(j-1)];
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
printf("%8d",s[i*n+j]);
printf("\n");
}
}
ztwz 2004-04-24
  • 打赏
  • 举报
回复
大虾们~~~
给个完整的代码行吗?
这一题快把我给逼疯了!
sharkhuang 2004-04-24
  • 打赏
  • 举报
回复
你其实是malloc一个n*n的一位数组!然后自己的语义当2维数组用!也可以!

不过2维一般是malloc一个n维的一位指针数组!然后再每个指针malloc n大小的数组!就是n*n了
ztwz 2004-04-24
  • 打赏
  • 举报
回复
谢谢大虾~~~~
接分!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧