标题:自学C语言小白求解疑。求高手帮帮忙!
只看楼主
琳檬
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-2-21
结帖率:0
已结贴  问题点数:20 回复次数:7 
自学C语言小白求解疑。求高手帮帮忙!
程序代码:
#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);
}

我是在做这个函数,这样编写有什么问题吗?
搜索更多相关主题的帖子: double printf 自学 int i++ 
2020-02-21 18:15
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:5 
for行最后总是多余分号

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-02-21 18:26
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
    //for(i=1;i<=n;i++);
    for(i=1;i<=n;i++)

    //printf("t=%f\n",t);   
    printf("t=%lf\n",t);
2020-02-21 18:36
琳檬
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-2-21
得分:0 
回复 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
2020-02-21 18:37
琳檬
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-2-21
得分:0 
回复 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);
}

可是我这样依旧得不出正确的计算答案呀
2020-02-21 18:38
lenderfoxafs
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2020-2-21
得分:5 
前面两个不说了,说第三个。逻辑上没问题,关键是整数除法会截断,即1/i(当i>1)会始终为0,所以结果不对。解决方案:把i设置为double类型或者对表达式强制转换(double)1/i;
2020-02-21 19:33
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:5 
程序代码:
#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);
    }


把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-21 21:40
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
!这个符号在数学里是乘阶的意思,你的思路是完全错了,再怎么改也是得不到正确答案

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-21 22:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499332-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.154556 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved