遇到了点麻烦 ,看不懂了。求解释谢谢了
#include <stdio.h>
void main()
{
float fact(int n);
float f;
int n;
printf("please input an number\n");
scanf("%d",&n);
f=fact(n);
printf("%d!=%10.0f\n",n,f);
}
float fact(int n)
{
float y;
if(n<0)
{
printf("error!\n");
}
else
if(n==1||n==0)
y=1;
else
y=fact(n-1)*n;
return(y);
}
一个求阶乘的程序。 如果 你输入正数的话结果正确。但是你输入负数的话,本来就只要显示error就应该完 了的,比如你输入-5 回车,但是运行结果后出现error!下面又会出现-5=-107374176.这是什么意思。我的本意就只出现error就可以了。
如果n<0的话。y是不是就不会有返回值? 我单步调试看了也是没有返回值。返回到main函数中调用fact处也是没有值。但后执行f=fact下一个语句。printf(...)怎么会出现-5=-107374176呢? 程序执行过程貌似还是没搞清楚。 新手刚学,好多不懂 望知道的说下 谢了~如果要按照我的意思来运行 该怎么改呢?
[解决办法]
在printf("error!\n");后面加一条:
return 0.0;
[解决办法]
- C/C++ code
printf("error!\n"); exit(-1);
[解决办法]
#include <stdio.h>
void main()
{
float fact(int n);
float f;
int n;
printf("please input an number\n");
scanf("%d",&n);
if(n<0)
{
printf("error!\n");
}
else{
f=fact(n);
printf("%d!=%10.0f\n",n,f);
}
}
float fact(int n)
{
float y;
if(n==1||n==0)
y=1;
else
y=fact(n-1)*n;
return(y);
}