C语言用if else求三个数最小值的一题多解
一、问题引入
假设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);elseprintf("最小值是:%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); }elseif (x > z)printf("最小值是%d\n", z); elseprintf("最小值是%d\n", x); return 0;
}
第三种解法思路:
第一、
首先我们要明确题目要求是要我们求最小值,所以我们一开始,可以先随意将两个数进行比较,就像如上图代码中的第一个if
是先将x和y值进行比较,
若第一个if为真,那么y是最小值,接着进入第一个if里面的if嵌套,若为真,那么z就是最小值……
但是若第一个if为假,那么执行第一个if对应的else里面的……
第三种if循环里面的思路与以上两种思路类似,就不赘述了
总结、
学习任何一门语言,多思考,多实践,要养成开放性,灵活性的思维,不唯书,不为上,只为实,同时还要有批判思维,多学多问,多做!!!
创作不易,如有问题,多谢各位广大网友指正~