【初阶C语言】整数比大小

news2024/9/28 23:32:29

 各位大佬的光临已是上上签

C语言刷题过程中,一定遇到过很多比大小的题目,那么本节就专门介绍比大小的方法,若大佬们还有更优解,欢迎补充呀!

本节讲解的方法主要有三种:1.条件判断  2.三目操作符  3.函数调用    4.数组判断

从两个数到多个数比较大小,其中,当有多个数比较的时候,利用数组的性价比达到最高。

一、两个数比大小

     我们先来两个数比较大小,慢慢进入状态。

题目:用C语言代码完成两个数的比较大小

解法1:

          选择语句(if...esle

我们先看代码:

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	printf("请输入要比较大小的两个数\n");
	scanf("%d%d",&a,&b);
	int max = 0;//定义第三变量,用来存放较大的数
	if (a > b)//选择语句,不是a就是b
		max = a;
	else
		max = b;
	printf("%d\n",max);//打印一下最大值
	return 0;
}

运行结果:

     第一种方法是比较简单,而且比较容易想到的。

解法2:

           三目运算符(exp1?exp2:exp3

我们先介绍一下三目操作符:exp1,2,3分别是三个表达式。如果表达式1为真,则执行表达式2;如果表达式1为假,则执行表达式3的内容。

图解: 

 介绍完成,我们看代码:

#include<stdio.h>

int 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:

          函数调用法(利用函数返回值)

这种方法相比上面的来说略向多余,不过我们也要了解一下。

我们直接看代码:

#include<stdio.h>
int Max(int x,int y)//定义两个形参接收实参
{
	if (x > y)
		return x;//这里可以直接返回最大值
	else
		return y;//x的值相当于a,y相当于b
}
int main()
{
	int a = 0;
	int b = 0;
	printf("请输入要比较大小的两个数\n");
	scanf("%d%d", &a, &b);
	int max = 0;
	max=Max(a,b);//这里把需要比较的数作为实参传给函数
	printf("%d\n",max);
	return  0;
}

 运行结果:

该函数体内部也可以这么写:

int Max(int x, int y)
{
	return x > y ? x : y;
}

 整体的运行结果是一样的,不过第二种写法依然简洁。

二、三个数比大小

题目:用C语言代码比较出三个整数的最大值

解法1:

        选择语句(if...else

这里的写法与两个数比大小大体上相同,但是细微之处有差异

我们直接看代码:

#include<stdio.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;
	else
		max = b;//先找出两个数的最大值
	if (c > max)//再用最大值跟c比较
		max = c;//c大,再把c赋值为最大值;否则不需要改变
	printf("max=%d\n",max);
	return 0;
}

运行结果:

 解法2:

           三目运算符(exp1?exp2:exp3

这里需要改变的思路跟上面的如出一辙,都是先比较出两个数中的最大值。

代码写法:

#include<stdio.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:

          函数调用

这种方法就是把解法1,2套到函数里面,思路如出一辙,这里我们就不细说了,想了解的话可以私信我呀!

三、四个数及以上

讲解到这里,也是到本节的重点内容了;我们直接往下看。

题目:输入4个整数,找出最大值

分析:与三个数比较大小的思想一样,需要先找出部分数的大小,再与剩下的数比较

解法1:

        选择语句(if...esle

直接看代码:

#include<stdio.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;
	if (a > b)//找出ab中较大的数
		max1 = a;
	else
		max1 = b;
	if (c > d)//找出cd中较大的数
		max2 = c;
	else
		max2 = d;
	if (max1 > max2)//找出max1和max2中较大的数
		max = max1;
	else
		max = max2;
	printf("%d\n", max);

	return 0;
}

运行结果:

 总的来说就是一个整体法,看成三组两个数比较大小。

解法2:

         三目操作符(exp1?exp2:exp3

我们直接看代码:

#include<stdio.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语言思想:先假定一个最大值,剩下的值一一与最大值比较,大于最大值就交换,小于直接比较下一个。

代码:

#include<stdio.h>
int main()
{
	int arr[6] = { 10,20,-20,63,12,3 };//把需要比较的数放进一个数组里
	                               //需要比较多少个数可以自己决定
	int max = arr[0];//直接把第一个数(10)假设为最大值
	int i = 1;//只需要从第二个开始比较
	for (i=1;i<6;i++) 
	{
		if (max < arr[i])
			max = arr[i];//比max大就交换,反之不用
	}
	printf("max=%d\n",max);
	return 0;
}

运行结果:

 上述方法可以比较多个数的大小,10个,100个都没有问题,只需要适当修改数组大小和循环的次数即可。

注意:本章介绍的比较大小都是整数,小数不可以使用,需要把int改成double等一系列调整。另外,int存放的值不易太大,会越界。

四、总结

1.比较大小的通用方法是数组+循环

2.数字少时,三目运算符的代码较简便

3.两种思想:两两比较和先确定最大值


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/808529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JA64 1+2+3+...n

一、题目 求123...n_牛客题霸_牛客网 二、代码 1.使用静态成员变量构造函数 class SUM {private:static int _i;static int _ret;public:SUM(){_ret _ret _i;_i;}static int GetRet(){return _ret;} }; int SUM::_i1; int SUM::_ret0;class Solution { public:int Sum_So…

暴力求解--完数个数(等于本身之外的因子之和)

找出10000以内的自然数中的所有完数&#xff0c;并统计找到的完数个数。 #include<stdio.h> int main() {//找到10000以内所有的完数&#xff08;等于恰好等于它本身之外的因子之和&#xff09;&#xff0c;并统计完数个数。int n,i,s,count0;printf("找到的所有完…

jsonp 实现跨域 同时也是一个 webflux 的demo 示例

文章目录 核心原理代码html服务端 &#xff08;java 为例子&#xff09;服务端目录结构 核心原理 前端&#xff1a; 使用js 创建 script 标签&#xff0c;将请求地址&#xff0c;放到其src 中&#xff0c;并将 script 标签追加到文档流&#xff1b;后端&#xff1a;根据约定好…

Latex好看的引用(文献,url, 文内引用)

强迫症实锤了&#xff0c;完全符合本人审美&#xff01;&#xff01;&#xff01; \usepackage{hyperref} \hypersetup{ hidelinks, colorlinkstrue, linkcolorIndigo, urlcolorDeepSkyBlue4, citecolorIndigo }基本还原了 哼&#xff0c;欺负老子色彩妹那么敏感是吧&…

WIZnet W51000S-EVB-PICO 入门教程(一)

概述 W5100S-EVB-Pico是基于树莓派RP2040和全硬件TCP/IP协议栈控制器W5100S的微控制器开发板-基本上与树莓派Pico板相同&#xff0c;但通过W5100S芯片增加了以太网功能。 W5100S-EVB-Pico特点 RP2040规格参数 双核Arm Cortex-M0 133MHz264KB 高速SRAM和2MB板载内存通过…

Docker复杂命令便捷操作

启动所有状态为Created的容器 要启动所有状态为"created"的Docker容器&#xff0c;可以使用以下命令&#xff1a; docker container start $(docker container ls -aq --filter "statuscreated")上述命令执行了以下步骤&#xff1a; docker container l…

【Linux】-进程概念及初始fork

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

C++ 拷贝构造函数

拷贝构造函数是一种特殊的构造函数&#xff0c;具有一般构造函数的所有特性&#xff0c;其形参是本类的对象的引用。其作用是使用一个已经存在的对象&#xff08;由拷贝构造函数的参数指定&#xff09;&#xff0c;去初始化同类的一个新对象。 如果程序员没有定义类的拷贝构造函…

自动驾驶感知系统--惯性导航定位系统

惯性导航定位 惯性是所有质量体本身的基本属性&#xff0c;所以建立在牛顿定律基础上的惯性导航系统&#xff08;Inertial Navigation System,INS&#xff09;(简称惯导系统)不与外界发生任何光电联系&#xff0c;仅靠系统本身就能对车辆进行连续的三维定位和三维定向。卫星导…

Ubuntu-文件和目录相关命令一

&#x1f52e;linux的文件系统结构 ⛳目录结构及目录路径 &#x1f9e9;文件系统层次结构标准FHS Filesystem Hierarchy Standard(文件系统层次结构标准&#xff09; Linux是开源的软件&#xff0c;各Linux发行机构都可以按照自己的需求对文件系统进行裁剪&#xff0c;所以众多…

MyBatisPlus从入门到精通-3

紧接着上一篇的查询 接下来的重点介绍增删改操作了 Insert id&#xff08;主键&#xff09;生成策略 前面的案列中我们没有指定id字段 但是它是生成了一个很长的id&#xff0c;并不是我们数据表定义自增 这是Mp内部算法出来的一个值 其实根据不同应用场景&#xff0c;应该使…

抖音SEO源代码的部署与搭建技巧详解

抖音SEO源代码的部署与搭建是一项重要的技术&#xff0c;促进了抖音的发展。在此&#xff0c;我将为大家详细介绍抖音SEO源代码的部署与搭建技巧。 首先&#xff0c;我们需要了解抖音SEO源代码的含义。SEO源代码是搜索引擎优化的核心&#xff0c;它是用于帮助搜索引擎更好地理解…

PHP使用Redis实战实录3:数据类型比较、大小限制和性能扩展

PHP使用Redis实战实录系列 PHP使用Redis实战实录1&#xff1a;宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案PHP使用Redis实战实录2&#xff1a;Redis扩展方法和PHP连接Redis的多种方案PHP使用Redis实战实录3&#xff1a;数据类型比较、大小限制和性能扩展 数据类型…

pytorch的发展历史,与其他框架的联系

我一直是这样以为的&#xff1a;pytorch的底层实现是c(这一点没有问题&#xff0c;见下边的pytorch结构图),然后这个部分顺理成章的被命名为torch,并提供c接口,我们在python中常用的是带有python接口的&#xff0c;所以被称为pytorch。昨天无意中看到Torch是由lua语言写的&…

docker 部署 mysql8.0 无法访问

文章目录 &#x1f5fd;先来说我的是什么情况&#x1fa81;问题描述&#x1fa81;解决方法&#xff1a;✔️1 重启iptables✔️2 重启docker &#x1fa81;其他有可能连不上的原因✔️1 客户端不支持caching_sha2_password的加密方式✔️2 my.conf 配置只有本机可以访问 &#…

用JavaScript和HTML实现一个精美的计算器

文章目录 一、前言二、技术栈三、功能实现3.1 引入样式3.2 编写显示页面3.2 美化计算器页面3.3 实现计算器逻辑 四、总结 一、前言 计算器是我们日常生活中经常使用的工具之一&#xff0c;可以帮助我们进行简单的数学运算。在本博文中&#xff0c;我将使用JavaScript编写一个漂…

【我们一起60天准备考研算法面试(大全)-第二十八天 28/60】【枚举】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

VBA技术资料MF35:VBA_在Excel中过滤数据

【分享成果&#xff0c;随喜正能量】好马好在腿&#xff0c;好人好在嘴。不会烧香得罪神&#xff0c;不会讲话得罪人。慢慢的你就会发现&#xff0c;一颗好心&#xff0c;永远比不上一张好嘴。。 我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#…

Android实例——自定义控件

自定义View 对现有控件进行扩展 案例一&#xff1a;添加背景 如下继承TextView public class MyTextView extends androidx.appcompat.widget.AppCompatTextView {private Paint mPaint1;private Paint mPaint2;public MyTextView(Context context) {this(context, null);}…

wireshark抓包新手使用教程(超详细)

一、简介 Wireshark是一款非常流行的网络封包分析软件&#xff0c;可以截取各种网络数据包&#xff0c;并显示数据包详细信息。 为了安全考虑&#xff0c;wireshark只能查看封包&#xff0c;而不能修改封包的内容&#xff0c;或者发送封包。 wireshark能获取HTTP&#xff0c;也…