哎呀,这个为什么呢,一直不对

img

C语言中数组和int double所分配的空间是在一起的,C语言是先给这些变量分配固定的空间,才可以使用这些变量的空间,之后才会运行程序,而且c语言的变量申明必须放在程序运行之前,所有的变量遵循先申明,再使用。你之所以能在for循环的初始化中定义变量,这是c++的写法,不是C的写法,而你的文件后缀名是.cpp的,所以可以使用C++的语法。同理,局部变量,也要在局部先声明,再使用

这个n的用法好像不对吧

数组不能这样定义呀 ,n是变量

把 double a[n]改成 double a[16]试试


void fun()
{
    int i,n;
    double sum,ti;
    scanf("%d",&n);
    sum=1;
    ti=1;
    for(i=1;i<=n;i++)
    {
        ti*=i;
        sum+=1.0/ti;
    }
    printf("%.10f",sum);
}
#include <stdio.h>


int main()
{
   int n,i,tem=1;
   double sum=0;
   scanf("%d",&n);
  
    for(i=1;i<=n;i++)
    {
     tem*=i;
      sum+=1.0/tem;
    }
  
   printf("%.10lf\n",sum+1);
    return 0;
}