鱼C论坛

 找回密码
 立即注册
查看: 1622|回复: 7

[已解决]关于if else 在加if的判定问题

[复制链接]
发表于 2022-1-10 02:17:45 | 显示全部楼层 |阅读模式
20鱼币
题目如下:
                输入三个整数,输出三个数中的最小数,要求填空:
                                                                int x,y,z min;
                                                                scanf("%d%d%d",x,y,z);
                                                                if(填空区域)         min = x;
                                                                else                        min = y;
                                                                if(填空区域)        min = z;
                                                                printf("%d\n",min);
我填第一空为 x<y && x<z
第二空为 z<x && z<y
得到的答案为正常的但是不明白ifelse如何判断的
最佳答案
2022-1-10 02:17:46
可能你没弄懂&&运算符
它表示的是两边同时为真才为真
第一个if
如果x<y 和 x<z同时成立
就把x放到min变量中
否则就把y放到min变量中
第二个if
如果 z<x 和 z<y同时成立
就把z放到min变量中
最后输出变量min就是最小的数
一般不这么填

最佳答案

查看完整内容

可能你没弄懂&&运算符 它表示的是两边同时为真才为真 第一个if 如果x
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-10 02:17:46 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
可能你没弄懂&&运算符
它表示的是两边同时为真才为真
第一个if
如果x<y 和 x<z同时成立
就把x放到min变量中
否则就把y放到min变量中
第二个if
如果 z<x 和 z<y同时成立
就把z放到min变量中
最后输出变量min就是最小的数
一般不这么填
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-10 08:09:57 | 显示全部楼层
1、假设x是最小的,那么他就满足第一个if 语句,将其赋值给min = x
2、如果x不是最小的,那么最小的就在y z当中,本题就是假设是y最小 min = y
3、如果y是最小,那么下一个if就不会执行, 直接输出,但如果z比y还小,那么min =z

第二步你可以假设是z是最小的,那么下面if语句就要改成 y<x && y<z,判断逻辑是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-10 09:18:01 | 显示全部楼层
第一个if是如果x是最小的则,min=x
else是如果x不是最小的则,min=y
最后一个if是判断z是不是最小的,如果是则,min=z

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

使用道具 举报

发表于 2022-1-10 09:54:25 | 显示全部楼层
首先判断第一个if,当第一个为真,min=x否则执行min=y,然后判断第二个if,第二个为真执行min=z,否则min=x或者min=y。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-10 23:28:17 | 显示全部楼层
你输入3个数
第一种情况:if先判断x小于y和z
第二种情况:else再判断z小于x和y
第三种情况:如果前面两种不成立就只有y最小了
可以这样写:
#include <stdio.h>

int main()
{
     int x,y,z,min;
     scanf("%d %d %d",x,y,z);
      
      if(x < y && x <z)
      {min = x;}
       else if(z < x && z < y)
      {min = y;}
       else()
      {min  = z;}

       printf("%d\n",min);
        
       return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-11 08:58:38 | 显示全部楼层
你好
if else 是满足if里面的条件则取if后面的结果否则取else后面的结果
首先在第一个填空区域  if后面的结果的min=x,那肯定得y和z都大于x才能满足x为最小
跟else后面的结果没有关系的,不用根据else后面结果来判断条件
第二个填空区域同理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-1-11 15:15:27 | 显示全部楼层
qinzilong 发表于 2022-1-10 19:51
可能你没弄懂&&运算符
它表示的是两边同时为真才为真
第一个if

是我钻牛角尖了我本来想的是else那边为什么是min=y你一解释我就懂了,原来是否则我就把min=y 和z没关系
谢谢!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 17:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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