C语言编程疑问

输出杨辉三角的前20行。我初学,试着编了一哈,但遇到了问题,下面是我写的:#include"stdio.h"intfun(intx){inty;if(x==0||x==1... 输出杨辉三角的前20行。我初学,试着编了一哈,但遇到了问题,下面是我写的:
#include "stdio.h"
int fun(int x)
{int y;
if(x==0||x==1)
y=1;
else
y=x*fun(x-1);
return(y);
}
main()
{int m,n,s;
for(m=1;m<=20;m++)
{for(n=0;n<=m;n++)
s=fun(m)/(fun(n)*fun(m-n));
printf("%d ",s);
}
printf('\n");
}
不知道问题出在哪里,望指出
展开
 我来答
lill120868300
2010-11-07 · TA获得超过521个赞
知道答主
回答量:56
采纳率:0%
帮助的人:33.8万
展开全部

根据你的问题,我举出了如图所示问题,(按序号)

(1):此处你的printf函数中的双引号写错了,应是英文状态下的双引号,而你写成了一个单引号和一个双引号

(2)和(5):在这里我要说的是你要输出20行杨辉三角形是不行的,因为int型数据的最大值为32767不够用,应换成浮点型,即实型。

(3)和(4)处有一个很大的问题,你的第二个for语句的所属句只有一行,也就是说(2)处的printf函数是等(3)处的for语句循环完才输出,即每行只输出一个值。应把(2)和(2)的上一句用花括号括起来。

(4)处把m值初始化为1,n值初始化为0则会出现这样一个结果,第一行输出两个数。因为一开始当m=1时  n=0和n=1会输出在一行。因此应把m值初始化为0

如下:

#include "stdio.h"

float fun(int x)

{int y;

if(x==0||x==1)

y=1;

else    

y=x*fun(x-1);

return(y);

}

main()

{int m,n;

float s;

for(m=0;m<10;m++)

{for(n=0;n<=m;n++)

{s=fun(m)/(fun(n)*fun(m-n));

printf("%5.0f  ",s);

}

printf("\n");

}

}

kamiwrm
2010-11-07
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
同一楼观点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式