鱼C论坛

 找回密码
 立即注册
查看: 1187|回复: 10

[已解决]if语句和scanf'的先后顺序

[复制链接]
发表于 2021-7-29 18:43:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
比如以下这样是正确的,但如果把scanf上移到sum下面就会出现输入数字之后程序无法反映是为什么呢
顺便解释一下那种错误情况下的运行思路(因为黑框输入数字之后就没有反应了所以也调试不了
#include<stdio.h>

int main()
{
        int n=0;
        int num;
        int sum=0;
        do{
        scanf("%d",&num);
        if(num !=-1){
                sum +=num;
                n ++;
        }
        }while(num !=-1);
        printf("%d",sum/n);
        return 0;
}
最佳答案
2021-7-29 19:29:06
本帖最后由 大马强 于 2021-7-29 19:32 编辑
#include<stdio.h>

int main()
{
        int n=0;
        int num;
        int sum=0;
        scanf("%d",&num);
        do{
        
        if(num !=-1){
                sum +=num;
                n ++;
        }
        }while(num !=-1);
        printf("%d",sum/n);
        return 0;
}
如果是这样
存在几个问题,
如果你没有输入-1,程序会陷入到死循环,因为你scanf在循环外,只能接受一次输入
当你输入-1,0/0是不行的,因为0不能当除数所以会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-29 19:29:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 大马强 于 2021-7-29 19:32 编辑
#include<stdio.h>

int main()
{
        int n=0;
        int num;
        int sum=0;
        scanf("%d",&num);
        do{
        
        if(num !=-1){
                sum +=num;
                n ++;
        }
        }while(num !=-1);
        printf("%d",sum/n);
        return 0;
}
如果是这样
存在几个问题,
如果你没有输入-1,程序会陷入到死循环,因为你scanf在循环外,只能接受一次输入
当你输入-1,0/0是不行的,因为0不能当除数所以会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-29 19:56:15 | 显示全部楼层
大马强 发表于 2021-7-29 19:29
如果是这样
存在几个问题,
如果你没有输入-1,程序会陷入到死循环,因为你scanf在循环外,只能接受一 ...

如果这种情况下我输入 1 2 3 4 5 -1,程序会怎么读取呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-29 20:04:46 | 显示全部楼层
2621079457 发表于 2021-7-29 19:56
如果这种情况下我输入 1 2 3 4 5 -1,程序会怎么读取呢

你scanf不在循环里,你只能读取1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-29 20:06:55 | 显示全部楼层

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-31 20:29:46 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-31 20:32:15 | 显示全部楼层
解决的话,麻烦设置一下最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-31 20:32:56 | 显示全部楼层

喔为什么我点调试输入1 2 3 4 -1再按enter就会没反应了呢,那个黑框就会停在那里然后什么都无法输入了,只能关掉?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-31 20:35:11 | 显示全部楼层
点击那个调试栏的下一步,或者F7
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-31 20:36:47 | 显示全部楼层
大马强 发表于 2021-7-31 20:35
点击那个调试栏的下一步,或者F7

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-31 20:38:10 | 显示全部楼层
不客气
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 20:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表