丰色丶 发表于 2022-1-10 02:17:45

关于if else 在加if的判定问题

题目如下:
                输入三个整数,输出三个数中的最小数,要求填空:
                                                                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如何判断的

qinzilong 发表于 2022-1-10 02:17:46

可能你没弄懂&&运算符
它表示的是两边同时为真才为真
第一个if
如果x<y 和 x<z同时成立
就把x放到min变量中
否则就把y放到min变量中
第二个if
如果 z<x 和 z<y同时成立
就把z放到min变量中
最后输出变量min就是最小的数
一般不这么填

大马强 发表于 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,判断逻辑是一样的

2242253525 发表于 2022-1-10 09:18:01

第一个if是如果x是最小的则,min=x
else是如果x不是最小的则,min=y
最后一个if是判断z是不是最小的,如果是则,min=z

Mr.wangpx 发表于 2022-1-10 09:54:25

首先判断第一个if,当第一个为真,min=x否则执行min=y,然后判断第二个if,第二个为真执行min=z,否则min=x或者min=y。

啊疯疯 发表于 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;
}

Naupathia 发表于 2022-1-11 08:58:38

你好
if else 是满足if里面的条件则取if后面的结果否则取else后面的结果
首先在第一个填空区域if后面的结果的min=x,那肯定得y和z都大于x才能满足x为最小
跟else后面的结果没有关系的,不用根据else后面结果来判断条件
第二个填空区域同理

丰色丶 发表于 2022-1-11 15:15:27

qinzilong 发表于 2022-1-10 19:51
可能你没弄懂&&运算符
它表示的是两边同时为真才为真
第一个if


是我钻牛角尖了我本来想的是else那边为什么是min=y你一解释我就懂了,原来是否则我就把min=y 和z没关系
谢谢!!
页: [1]
查看完整版本: 关于if else 在加if的判定问题