
C语言编程疑问
#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");
}
不知道问题出在哪里,望指出 展开
根据你的问题,我举出了如图所示问题,(按序号)
(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");
}
}