发仔哇哇呀 2020-02-10 10:34 采纳率: 100%
浏览 390
已采纳

不知道为什么程序没有响应

问题:猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。第二天早上将剩余的桃子又吃掉一半,并且又多吃了1个。此后每天都是吃掉前一天剩下的一半零一个。到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子?为了加强交互性,由用户输入不同的天数n进行递推,即假设第n天的桃子数为1。同时还要增加对用户输入数据的合法性验证(如:不允许输入的天数是0和负数)
图片说明

我的代码是这样的:
#include
#include
#include
int main()
{
int ret,day,i=1,sum=1;
printf("Input days:\n");
scanf("%d",&day);
do
{
ret=scanf("%d",&day);
while((ret!=1)||(day<=0))
{
printf("Input days:\n");
while(getchar()!='\n');
fflush(stdin);
ret=scanf("%d",&day);
}
sum=(sum+1)*2;
i++;
}while(i<day);
printf("sum=%d\n",sum);
return 0;
}

运行代码后,输入3敲下回车键后程序没有任何响应,但是去除第一个“ret=scanf("%d",&day);”后就有响应了,但是输入3敲回车键后依然会重复多一次“Input days”并输入3后才会出现sum=10,可以麻烦各位大神看看到底哪里出问题了吗?谢谢各位da'shen!!
  • 写回答

1条回答 默认 最新

  • threenewbee 2020-02-10 13:07
    关注
    #include <stdio.h>
    
    int main()
    {
        int ret,day,i=1,sum=1;
        while (1)
        {
            printf("Input days:\n");
            ret=scanf("%d",&day);
            if ((ret!=1)||(day<=0))
            {
                fflush(stdin);
                continue;
            }
            break;
        }
        do
        {
            sum=(sum+1)*2;
            i++;
        }while(i<day);
        printf("sum=%d\n",sum);
        return 0;
    }
    

    问题解决的话,请点下采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。