我的代码为什么输入什么结果都输出零

我的代码为什么输入什么结果都输出零

img

img

img

img

img

img

#include  
#include 
#include 
int main()
{
    int n;//模拟次数 
    int k=1,count=0;
    srand((unsigned)time(NULL));
    double r;
    int T1,T3,T2;
    scanf("%d",&n);
    while(k<=n)
    {
          r=rand()%2;
          if(r>=0&&r<0.7)
            T1=0;
        else if(r>=0.7&&r<0.9)
          T1=5;
        else
          T1=10; 
           r=rand()%2;
           if(r>=0&&r<0.3)
             T3=28;
           else if(r>=0.3&&r<0.7)
          T3=30;
        else if(r>=0.7&&r<0.9)
          T3=32; 
        else
          T3=34;
        T2=rand()%2;
        if(T1+T2>T3)
         count=count+1;    
        k=k+1;
    }
    printf("赶上火车的频率p为%lf",count/n*0.1); 
}

img

if(T1+T2>T3) 这个条件应该永远不成立,导致没执行,count为0
T1+T2不可能大于T3的,根据代码,T3至少为28,T1最大为10,T2最大为1

主要是count和n都是整数,且count小于n,所以35行count/n * 0.1=0 * 0.1 = 0
两个整数相除是整除,会丢失小数部分,所以你要改为 :
printf("赶上火车的频率p为%lf",count * 0.1 / n);

  1. rand()返回值是整数,rand()%2是求随机整数除以2的余数,所以结果只能是0或1,于是T1等于0或10,T2等于0或1,T3等于28或34;
  2. 你的T2算得不对;
  3. 若count小于n,则count/n等于0,count/n*0.1等于0.0,要先转化为浮点型

#include <stdio.h> 
#include <stdlib.h>
#include <time.h>

int main()
{
    int n;//模拟次数 
    int k=1,count=0;
    srand((unsigned)time(NULL));
    int r;
    int T1,T3,T2;
    scanf("%d",&n);
    while(k<=n)
    {
        r=rand()%10;
        if(r>=0&&r<7)
            T1=0;
        else if(r>=7&&r<9)
            T1=5;
        else
            T1=10; 
        r=rand()%10;
        if(r>=0&&r<3)
            T3=28;
        else if(r>=3&&r<7)
            T3=30;
        else if(r>=7&&r<9)
            T3=32; 
        else
            T3=34;
        //用二项分布近似正态分布
        T2=0;
        for(r=0;r<16;r++){
            T2+=rand()%2;
        }
        T2+=22;
        if(T1+T2>T3)
            count=count+1;    
        k=k+1;
    }
    printf("赶上火车的频率p为%lf",(double)count/n); 
}
 

这个缩进实在难看代码

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^