注册 登录
编程论坛 C语言论坛

自学C语言小白求解疑。求高手帮帮忙!

琳檬 发布于 2020-02-21 18:15, 1995 次点击
程序代码:

#include <stdio.h>
void main()
{   
    double t;
    int i=1,n=1;
    for(i=1;i<=n;i++);
    {
    t=1.0/i;
    }
    printf("t=%f\n",t);
}
   

为什么t=0.5?
程序代码:
#include <stdio.h>
void main()
{   
    double t;
    int i=1,n=1;
    for(i=1;i<=n;i++);
    {
    t=1/i;
    }
    printf("t=%f\n",t);
}
   

这样的话t=0?
程序代码:
#include <stdio.h>
double  fun(int  n)
{
    double t,s;
    int i;
    t=1;
    for(i=1;i<=n;i++);
    {
        t*=1/i;
        s+=t;   
    }
    return s;
}
main()
{  int  n;     double  s;
   printf("Input n:  ");  scanf("%d",&n);
   s=fun(n);
   printf("s=%f\n",s);
}

只有本站会员才能查看附件,请 登录
我是在做这个函数,这样编写有什么问题吗?
7 回复
#2
forever742020-02-21 18:26
for行最后总是多余分号
#3
吹水佬2020-02-21 18:36
    //for(i=1;i<=n;i++);
    for(i=1;i<=n;i++)

    //printf("t=%f\n",t);   
    printf("t=%lf\n",t);
#4
琳檬2020-02-21 18:37
回复 2楼 forever74
程序代码:
#include <stdio.h>
void main()
{   
    double t,s;
    int i,n=3;
    t=1;
    for(i=1;i<=n;i++)
    {
        t*=1/i;
        s+=t;   
    }
    printf("%f",s);
}

这样的话,依然算不出来,并且t=0
#5
琳檬2020-02-21 18:38
回复 3楼 吹水佬
程序代码:
#include <stdio.h>
void main()
{   
    double t,s;
    int i,n=3;
    t=1;
    for(i=1;i<=n;i++)
    {
        t*=1/i;
        s+=t;   
    }
    printf("l%f",s);
}

可是我这样依旧得不出正确的计算答案呀
#6
lenderfoxafs2020-02-21 19:33
前面两个不说了,说第三个。逻辑上没问题,关键是整数除法会截断,即1/i(当i>1)会始终为0,所以结果不对。解决方案:把i设置为double类型或者对表达式强制转换(double)1/i;
#7
叶纤2020-02-21 21:40
程序代码:

#include <stdio.h>
double a(int n)
{
double e;
  if(n==0)
  {return 1;
  }
  else
  e=a(n-1)*n;   
    }
int main()
{int n=0,i=0;
double sum=0,d=0;
scanf("%d",&n);
for(i=0;i<n;++i)
   {
    d=a(i);
   sum+=1/d;
   }

 printf("%lf",sum);
    }

#8
叶纤2020-02-21 22:08
!这个符号在数学里是乘阶的意思,你的思路是完全错了,再怎么改也是得不到正确答案
1