求10行杨辉三角编写二个函数,一个求阶乘,一个输出
答案:2 悬赏:50 手机版
解决时间 2021-03-17 21:42
- 提问者网友:寂寞梧桐
- 2021-03-17 05:44
求10行杨辉三角编写二个函数,一个求阶乘,一个输出
最佳答案
- 五星知识达人网友:封刀令
- 2021-03-17 07:09
假如N = 10;
#include
#define N 10
//阶乘
int fact(n)
{
if(n==0 || n == 1)
{
return 1;
}
else
{
return n*fact(n-1);
}
}
int main()
{
int sum = 0;
for(int i=1;i<=N;i++)
{
sum += fact(i);
}
printf("sum = %d",sum);
}
#include
#define N 10
//阶乘
int fact(n)
{
if(n==0 || n == 1)
{
return 1;
}
else
{
return n*fact(n-1);
}
}
int main()
{
int sum = 0;
for(int i=1;i<=N;i++)
{
sum += fact(i);
}
printf("sum = %d",sum);
}
全部回答
- 1楼网友:轻雾山林
- 2021-03-17 08:01
你的代码有一个致命错误,导致不能通过编译:c/c++规定数组下标不能使用变量只能使用常量,而你的int a[n][n]={0}却试图用函数qf()带进来的变量n来定义数组a的下标。把它改为常数就可以了。另,调用qf时错写为qf(b)了,应该是qf(a)。其余正确。下面是我改过的,并在主函数中加了些提示,但这无关紧要。供参考 #include "stdio.h" void qf(int n){ int i,j,a[11][11]={0}; for(i=1;i<n;i++){ a[i][1]=1; a[i][i]=1; } for(i=3;i<n;i++) for(j=2;j<i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i<n;i++){ for(j=1;j<=i;j++) printf("%6d",a[i][j]); printf("\n"); } } void main(){ int a; printf("要打出几层?\nn="); for(;;){ scanf("%d",&a); if(a>9) printf("太大了,请输入<10的数:"); else break; } qf(a+1);//这里写+1是为了输出层数与输入数对应。 }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯