#include <stdio.h>
#include <math.h>
main()
{
float i;
float x,N,sum;
printf("enter x and N respectively");
scanf ("%f %f", &x, &N);
sum = 0;
for (i=1;i<=N;i++){
sum = sum + ((pow(x,i))/(fact(i)));
}
printf ("%f", sum);
}
int fact(int n){
int i,temp;
temp = 1;
for (i=1;i<=n;i++){
temp = temp*i;
return temp;
}
}
这是相应地打印条款的总和。我尝试在main中定义事实,但是有一些控制流警告,我这次尝试了同样的事情,但错误的答案。有什么帮助吗?
答案 0 :(得分:1)
您需要在int fact(int n);
函数之前添加main()
以告诉编译器存在名为fact的函数,或者您可以在之前添加整个函数定义。
答案 1 :(得分:1)
你不能(你被C99或C11标准禁止)在另一个内部定义一个函数(如fact
)(如main
)。
但是,某些C编译器,特别是GCC接受作为扩展名才能拥有nested functions。
(我建议不要使用该扩展名,特别是如果你是C的新手)
当然你最好宣布
int fact(int n);
在 main
之前并在之后保留定义。
您的代码错误(特别是 define main
更好int main(int argc, char**argv)
然后了解getopt并使用它。用所有警告编译它&amp;调试信息(例如gcc -Wall -Wextra -g homework.c -o binaryprog
...)然后使用调试器(例如gdb ./binaryprog
)
答案 2 :(得分:0)
您必须在main之上声明fact()
。有两种方法可以做到。
第一种方式:在main()
之上添加int fact(int n);
第二种方式:将整个函数复制到main()之上。所以它看起来像:
#include <stdio.h>
#include <math.h>
int fact(int n)
{
int i,temp;
temp = 1;
for (i=1;i<=n;i++){
temp = temp*i;
return temp;
}
}
main()
{
float i;
float x,N,sum;
printf("enter x and N respectively");
scanf ("%f %f", &x, &N);
sum = 0;
for (i=1;i<=N;i++){
sum = sum + ((pow(x,i))/(fact(i)));
}
printf ("%f", sum);
}