C语言用if else求三个数最小值的一题多解

发布于:2025-04-20 ⋅ 阅读:(58) ⋅ 点赞:(0)

一、问题引入

假设x,y,z为整数,使用if else语句求x,y,z三个数中的最小值?

二、三种解法

第一种解法:

#include<stdio.h>
int main(){
    int x,y,z,min;
    printf("请输入三个整数:");
    scanf_s("%d %d %d", &x, &y, &z);
    //初始值x为最小值
    min = x;
    if (min > y)
       min = y;
    if (min > z)
       min = z;
    printf("最小值是%d\n", min);
    reintf 0;
}
    

第一种解法思路:
第一,他是首先假设x为最小值

第二,总共分四种情况:

一、
进入第一个if判断

若min>y为真 所以x>y 此时y最小

接着进入第二个循环

若min>z为真 那么y>z 最小值是z(以上为第一种情况 是两个if判断都为真的情况)

二、
进入第一个if判断

若min>y为假 此时最小值还是x

接着进入第二个循环

若min>z为假 此时最小值还是x(以上为第二种情况 是两个if判断都为假的情况)

三、
进入第一个if判断

若min>y为真 此时最小值是y

接着进入第二个循环

若min>z为假 此时最小值是y(以上为第三种情况 是两个if判断前一个为真后一个为假的情况)

四、
进入第一个if判断

若min>y为假 此时最小值还是x

接着进入第二个循环

若min>z为真 此时最小值是z(以上为第四种情况 是两个if判断前一个为假后一个为真的情况)

第二种解法:

#include<stdio.h>
int main(){
    int x,y,z;
    printf("请输入三个整数:");
    scanf_s("%d %d %d", &x, &y, &z);
    if (x < y && x < z)
        printf("最小值是:%d", x);
    else if (y < z && y < x)
        printf("最小值是:%d", y);
    else
        printf("最小值是:%d", z); 
    return 0;
}

 第二种解法思路:
第一、
若第一个if表达式为真,进入第一个if判断,x<y并且x<z,那么显而易见,最小值就是x

若第二个表达式为真,计入第二个else if,y<z&&y<x, 那么这种情况,显而易见,最小值就是y

以上两种情况,最小值不是x就是y(即前两种情况都不满足),那么最后一个else只z就是最小值 

第二、
第二种解法中要注意,每个条件表达式之间是互斥的(理解即可) 

第三种解法: 

#include<stdio.h>
int main(){
    int x,y,z;
    printf("请输入三个整数:");
    scanf_s("%d %d %d", &x, &y, &z);
    if (x > y)
        if (y > z)
            printf("最小值是%d\n", z); 
        else
        {
            printf("最小值是%d\n", y); 
        }
    else
        if (x > z)
            printf("最小值是%d\n", z); 
        else
            printf("最小值是%d\n", x); 
    return 0;
}

第三种解法思路:
第一、
首先我们要明确题目要求是要我们求最小值,所以我们一开始,可以先随意将两个数进行比较,就像如上图代码中的第一个if

是先将x和y值进行比较,

若第一个if为真,那么y是最小值,接着进入第一个if里面的if嵌套,若为真,那么z就是最小值……

但是若第一个if为假,那么执行第一个if对应的else里面的……

第三种if循环里面的思路与以上两种思路类似,就不赘述了

总结、
学习任何一门语言,多思考,多实践,要养成开放性,灵活性的思维,不唯书,不为上,只为实,同时还要有批判思维,多学多问,多做!!! 

创作不易,如有问题,多谢各位广大网友指正~


网站公告

今日签到

点亮在社区的每一天
去签到