【发布时间】:2023-01-13 23:10:46
【问题描述】:
#include <stdio.h>
#include <math.h>
int main()
{
double precision = 0;
printf("\ninsert number\n");
while(precision < 1){
scanf("%lf",&precision);
}
printf("the value of e with precision of %.0lf is %lf",precision,e(precision));
return 0;
}
int fact(int num){
int ris = 1;
for(int i = num;i > 0;i--){
ris = ris * i;
}
printf("res=%d\n",ris);
return ris;
}
int e(double precision){
double valE = 1;
for(double i = precision;i > 0 ;i--){
valE = valE + 1/fact(i);
printf("\nsame res:%.1lf\n",fact(i));
}
return (double)valE;
}
我知道有一个答案,但我的问题是两个函数之间的通信,我知道我可以通过在 main() 中拍打所有内容来解决它
【问题讨论】:
-
请不要张贴文字图片,将文字张贴为格式正确的文字。您的程序输出是文本。你可以edit你的问题。
-
我不明白这个程序应该做什么,但也许
e应该返回double而不是int?也许main应该移到e下面,这样你就不会隐式声明任何东西? -
永远不要使用浮点数作为循环迭代器。一只小鸟私语说浮点数不准确...
-
你有没有收到任何编译器警告?
-
一旦我将 int e 函数替换为 double e,它就会停止编译,我认为只需识别 return ad double 就可以完成这项工作