什么网站可以做网站,好用的网站,导出 wordpress,郑州高新区网站建设各位大佬的光临已是上上签 在C语言刷题过程中#xff0c;一定遇到过很多比大小的题目#xff0c;那么本节就专门介绍比大小的方法#xff0c;若大佬们还有更优解#xff0c;欢迎补充呀#xff01; 本节讲解的方法主要有三种#xff1a;1.条件判断 2.三目操作符 3.函数调… 各位大佬的光临已是上上签 在C语言刷题过程中一定遇到过很多比大小的题目那么本节就专门介绍比大小的方法若大佬们还有更优解欢迎补充呀 本节讲解的方法主要有三种1.条件判断 2.三目操作符 3.函数调用 4.数组判断
从两个数到多个数比较大小其中当有多个数比较的时候利用数组的性价比达到最高。 一、两个数比大小 我们先来两个数比较大小慢慢进入状态。 题目用C语言代码完成两个数的比较大小
解法1 选择语句if...esle
我们先看代码
#includestdio.h
int main()
{int a 0;int b 0;printf(请输入要比较大小的两个数\n);scanf(%d%d,a,b);int max 0;//定义第三变量用来存放较大的数if (a b)//选择语句不是a就是bmax a;elsemax b;printf(%d\n,max);//打印一下最大值return 0;
}运行结果 第一种方法是比较简单而且比较容易想到的。
解法2 三目运算符exp1?exp2:exp3
我们先介绍一下三目操作符exp1,2,3分别是三个表达式。如果表达式1为真则执行表达式2如果表达式1为假则执行表达式3的内容。
图解 介绍完成我们看代码
#includestdio.hint main()
{int a 0;int b 0;printf(请输入要比较大小的两个数\n);scanf(%d%d,a,b);int max 0;//以上的代码都是一样的max a b ? a : b;//这里需要用max接收它们的运行结果printf(%d\n,max);return 0;
}
运行结果 这种相比选择语句的判断来说代码量更加的简洁。
解法3 函数调用法利用函数返回值
这种方法相比上面的来说略向多余不过我们也要了解一下。
我们直接看代码
#includestdio.h
int Max(int x,int y)//定义两个形参接收实参
{if (x y)return x;//这里可以直接返回最大值elsereturn y;//x的值相当于a,y相当于b
}
int main()
{int a 0;int b 0;printf(请输入要比较大小的两个数\n);scanf(%d%d, a, b);int max 0;maxMax(a,b);//这里把需要比较的数作为实参传给函数printf(%d\n,max);return 0;
} 运行结果
该函数体内部也可以这么写
int Max(int x, int y)
{return x y ? x : y;
} 整体的运行结果是一样的不过第二种写法依然简洁。 二、三个数比大小
题目用C语言代码比较出三个整数的最大值
解法1 选择语句if...else
这里的写法与两个数比大小大体上相同但是细微之处有差异
我们直接看代码
#includestdio.h
int main()
{int a 0, b 0, c 0;printf(请输入三个数\n);scanf(%d%d%d,a,b,c);int max 0;//定义最大值if (a b)max a;elsemax b;//先找出两个数的最大值if (c max)//再用最大值跟c比较max c;//c大再把c赋值为最大值否则不需要改变printf(max%d\n,max);return 0;
}运行结果 解法2 三目运算符exp1?exp2:exp3
这里需要改变的思路跟上面的如出一辙都是先比较出两个数中的最大值。
代码写法
#includestdio.h
int main()
{int a 0, b 0, c 0;printf(请输入三个数\n);scanf(%d%d%d, a, b, c);int max 0;//定义最大值max a b ? a : b;//先比较两个数的最大值max c max ? c : max;//再拿第三个数和最大值比较printf(max%d\n, max);return 0;
}
运行结果 对比两种代码量我们的三目运算符大哥依旧稳定发挥
解法3 函数调用
这种方法就是把解法12套到函数里面思路如出一辙这里我们就不细说了想了解的话可以私信我呀
三、四个数及以上
讲解到这里也是到本节的重点内容了我们直接往下看。
题目输入4个整数找出最大值。
分析与三个数比较大小的思想一样需要先找出部分数的大小再与剩下的数比较
解法1 选择语句if...esle
直接看代码
#includestdio.h
int main()
{int a 0, b 0, c 0, d 0;printf(请输入四个数\n);scanf(%d%d%d%d, a, b, c, d);int max1 0,max20;int max 0;if (a b)//找出ab中较大的数max1 a;elsemax1 b;if (c d)//找出cd中较大的数max2 c;elsemax2 d;if (max1 max2)//找出max1和max2中较大的数max max1;elsemax max2;printf(%d\n, max);return 0;
}
运行结果 总的来说就是一个整体法看成三组两个数比较大小。
解法2 三目操作符exp1?exp2:exp3
我们直接看代码
#includestdio.h
int main()
{int a 0, b 0, c 0, d 0;printf(请输入四个数\n);scanf(%d%d%d%d, a, b, c, d);int max1 0, max2 0;int max 0;max1 a b ? a : b;//各自比较max2 c d ? c : d;//max max1 max2 ? max1 : max2;printf(%d\n, max);return 0;
}
运行结果 总结以上两种解法都是两两比较大小得出两个数再比较大小。 我们可以看到三目运算法的代码量依旧很少但是如果比较5个数10个数呢甚至更多呢难道只能这样比较吗答案当然不是的这里有一种方法数越多效率越快就是数组循环的方法。
解法3 我们先介绍该方法的主要思想假设一个健身两年半的同学在班里面说我们班需要有一个大哥作为领头人决出的方法就是一一对打最后面胜出的为大哥。这个时候有5个同学同学自认为自己很屌站了出来。这个时候假设健身两年半的是擂主每次上去跟他对打赢的同学作为擂主再跟下一个同学对打直到最后一个人胜出假设对打不消化能量
图解 C语言思想先假定一个最大值剩下的值一一与最大值比较大于最大值就交换小于直接比较下一个。
代码
#includestdio.h
int main()
{int arr[6] { 10,20,-20,63,12,3 };//把需要比较的数放进一个数组里//需要比较多少个数可以自己决定int max arr[0];//直接把第一个数10假设为最大值int i 1;//只需要从第二个开始比较for (i1;i6;i) {if (max arr[i])max arr[i];//比max大就交换反之不用}printf(max%d\n,max);return 0;
}
运行结果 上述方法可以比较多个数的大小10个100个都没有问题只需要适当修改数组大小和循环的次数即可。
注意本章介绍的比较大小都是整数小数不可以使用需要把int改成double等一系列调整。另外int存放的值不易太大会越界。
四、总结
1.比较大小的通用方法是数组循环
2.数字少时三目运算符的代码较简便
3.两种思想两两比较和先确定最大值