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

news/2024/4/26 10:41:17/文章来源:https://blog.csdn.net/2301_77053417/article/details/131992621

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

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就是bmax = a;elsemax = 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;//这里可以直接返回最大值elsereturn 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;elsemax = 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;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

我们直接看代码:

#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.luyixian.cn/news_show_337225.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充

前言 不从恶人的计谋&#xff0c;不站罪人的道路&#xff0c;不坐亵慢人的座位&#xff0c;惟喜爱耶和华的律法&#xff0c;昼夜思想&#xff0c;这人便为有福&#xff01;他要像一棵树栽在溪水旁&#xff0c;按时候结果子&#xff0c;叶子也不枯干。凡他所做的尽都顺利。 如…

14 Linux实操篇-进程管理(重点)

14 Linux实操篇-进程管理&#xff08;重点&#xff09; 文章目录 14 Linux实操篇-进程管理&#xff08;重点&#xff09;14.1 进程的基本操作14.1.1 进程和程序14.1.2 父进程和子进程14.1.3 常见的Linux进程14.1.4 显示系统执行的进程-ps14.1.5 终止进程-kill/killall14.1.6 查…

36.悬浮板

悬浮板 html部分 <div class"container"><div class"square"></div> </div>css部分 *{margin: 0;padding: 0; } body{background-color: #111;height: 100vh;overflow: hidden;display: flex;justify-content: center;align-it…

【小白必看】Python爬虫实战之批量下载女神图片并保存到本地

文章目录 前言运行结果部分图片1. 引入所需库2. 发送请求获取网页内容3. 解析网页内容并提取图片地址和名称4. 下载并保存图片完整代码关键代码讲解 结束语 前言 爬取网络上的图片是一种常见的需求&#xff0c;它可以帮助我们批量下载大量图片并进行后续处理。本文将介绍如何使…

机器学习 | Python实现NARX模型预测控制

机器学习 | Python实现NARX模型预测控制 目录 机器学习 | Python实现NARX模型预测控制效果一览基本介绍研究内容程序设计参考资料效果一览 基本介绍 机器学习 | Python实现NARX模型预测控制 研究内容 贝叶斯黑盒模型预测控制,基于具有外源输入的非线性自回归模型的预期自由能最…

绝美!轮到AI写真爆火了!18种AI视频制作教程;Llama 2微调的极速指南;Nijijourney官方AI绘画课 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 摄影写真面临AI技术洗牌&#xff0c;一键生成杂志大片的时代来了 软件&#xff1a;midjourney & Stable Diffusion 模型&#xff…

TypeScript基础篇 - TS模块

目录 模块的概念 Export 语法&#xff08;default&#xff09; Export 语法&#xff08;non-default&#xff09; import 别名 Type Export语法【TS】 模块相关配置项&#xff1a;module【tsconfig.json】 模块相关配置项&#xff1a;moduleResolution 小节总结 模块的…

【LLM】大语言模型学习之LLAMA 2:Open Foundation and Fine-Tuned Chat Model

大语言模型学习之LLAMA 2:Open Foundation and Fine-Tuned Chat Model 快速了解预训练预训练模型评估微调有监督微调(SFT)人类反馈的强化学习(RLHF)RLHF结果局限性安全性预训练的安全性安全微调上手就干使用登记代码下载获取模型转换模型搭建Text-Generation-WebUI分发模型…

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

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

M 芯片的 macos 系统安装虚拟机 centos7 网络配置

centos 安装之前把网络配置配好或者是把网线插好 第一步找到这个 第二步打开网络适配器 选择图中所指位置 设置好之后 开机启动 centos 第三步 开机以后 编写网卡文件保存 重启网卡就可以了&#xff0c;如果重启网卡不管用&#xff0c;则重启虚拟机即可 “ ifcfg-ens160 ” 这…

【java入门学习】

文章目录 java学习章节目录学习前的准备main函数怎么写&#xff1f;Java程序运行的步骤如何让代码运行起来&#xff1f;java程序由三部分构成&#xff1a;注释注释规范 标识符练习 总结 java学习章节目录 SE语法 初阶段主要来熟悉java的语法&#xff1a; 1.初始java 2.数据类型…

黑苹果如何在macOS Sonoma中驱动博通网卡

准备资源&#xff08;百度&#xff1a;黑果魏叔 下载&#xff09; 资源包中包含&#xff1a;AirportBrcmFixup.kext/IOSkywalkFamily.kext/IO80211FamilyLegacy.kext/OpenCore-Patcher 使用方法&#xff1a; 1.将 csr-active-config 设置为 03080000 全选代码 复制 2.在 …

kafka集群搭建(Linux环境)

zookeeper搭建&#xff0c;可以搭建集群&#xff0c;也可以单机&#xff08;本地学习&#xff0c;没必要搭建zookeeper集群&#xff0c;单机完全够用了&#xff0c;主要学习的是kafka&#xff09; 1. 首先官网下载zookeeper&#xff1a;Apache ZooKeeper 2. 下载好之后上传到…

layui框架学习(33:流加载模块)

Layui中的流加载模块flow主要支持信息流加载和图片懒加载两部分内容&#xff0c;前者是指动态加载后续内容&#xff0c;示例的话可以参考csdn个人博客主页&#xff0c;鼠标移动到页面底部时自动加载更多内容&#xff0c;而后者是指页面显示图片时才会延迟加载图片信息。   fl…

记录vue的一些踩坑日记

记录vue的一些踩坑日记 安装Jq npm install jquery --save vue列表跳转到详情页&#xff0c;再返回列表的时候不刷新页面并且保持原位置不变&#xff1b; 解决&#xff1a;使用keepAlive 在需要被缓存的页面的路由中添加&#xff1a;keepAlive: true, {path: /viewExamine,nam…

怎么在线修改图片?分享一个图片修改工具

无论是在个人或商业领域&#xff0c;我们都需要使用高质量的图片来传达信息或提高品牌形象。大尺寸的图片也会占据大量的存储空间和带宽&#xff0c;影响网站的加载速度和用户体验。因此&#xff0c;我们需要一种高效的工具来解决这个问题。今天向大家介绍一款非常实用的图片处…

Android 开发代码规范

一. AndroidStudio开发工具规范 使用最新的稳定版本.统一文件的编码格式为utf-8. 清除每个类里面的无效的import导包.代码样式统一,比如&#xff0c;tab缩进4个空格&#xff0c;或者 tab size等如果没有特殊情况使用默认的配置即可。每行字数每行字符数不得超过 160 字符&…

C++--菱形继承

1.什么是菱形继承 单继承&#xff1a;一个子类只有一个直接父类时称这个继承关系为单继承 多继承&#xff1a;一个子类有两个或以上直接父类时称这个继承关系为多继承 菱形继承的问题&#xff1a;菱形继承有数据冗余和二义性的问题&#xff0c;数据冗余是由于创建多个相同类型的…

SpringBoot 如何进行 统一异常处理

在Spring Boot中&#xff0c;可以通过自定义异常处理器来实现统一异常处理。异常处理器能够捕获应用程序中抛出的各种异常&#xff0c;并提供相应的错误处理和响应。 Spring Boot提供了ControllerAdvice注解&#xff0c;它可以将一个类标记为全局异常处理器。全局异常处理器能…

Glow: Generative Flow with Invertible 1×1 Convolutions论文解析及实现(二)

Glow: Generative Flow with Invertible 11 Convolutions 代码github: https://github.com/rosinality/glow-pytorch添加链接描述 1 模型架构如下 1.1 左边图flow模型 Flow model ① ActNorm ② InvConv2dLU ③ AffineCoupling 1.2 右边模型结构Glow模型 Glow Model Block…