请问这个是因为什么出错的?
//计算平方阶乘long fun1(long a)//阶乘函数
{
long b,mult;
for(b=1;b<=a;b++)
{
mult=mult*b;
}
return mult;
}
long fun2(long c)//计算平方
{
long d;
d=c*c;
return d;
}
#include <stdio.h>
main()
{
long z;
z=fun1(fun2(2))+fun1(fun2(3));
printf("%ld\n",z);//答案应该是362904,输出的却是 165473736,why
}
,请求大佬解决 问题 本帖最后由 风过无痕1989 于 2020-10-15 10:06 编辑
头文件:#include<stdio.h> 位置不对
#include<stdio.h>
long fun1(long a)//阶乘函数
{
long b,mult = 1; // mult 没有赋初值
for(b=1;b<=a;b++)
{
mult=mult*b;
}
return mult;
}
long fun2(long c)//计算平方
{
long d;
d=c*c;
return d;
}
int main()
{
long z;
z = fun1(fun2(2)) + fun1(fun2(3));
printf("%ld\n",z);//答案应该是362904,输出的却是 165473736,why
} 本帖最后由 xieglt 于 2020-10-15 10:17 编辑
//z = (2*2 + (3*3)!)!
//z = (4 + 9 !)!
//z = (4 + 362880)!
//z = (362884)!
z=fun1(fun2(2))+fun1(fun2(3));
看错了,不好意思
long fun1(long a)//阶乘函数
{
//mult 没赋初值阿
long b,mult = 1;
for(b=1;b<=a;b++)
{
mult=mult*b;
}
return mult;
} fun1函数中,创建的变量mult没赋值就开始乘了。会用内存中的废值进行。即它存的位置处本来有一个值。
fun1函数应该更改,不需要mult
直接定义一个b,然后:for(b=1;a>0,a--){b*=a;} return b;
mult=mult*b; 可以省写成:mult *= b; xieglt 发表于 2020-10-15 10:12
//z = (2*2 + (3*3)!)!
//z = (4 + 9 !)!
//z = (4 + 362880)!
自己后来调试的时候看到问题了,还是很感谢 my—_daboss 发表于 2020-10-16 11:17
自己后来调试的时候看到问题了,还是很感谢
谢谢{:5_106:}
页:
[1]