初学c语言必会的五道题

前言

作为初学将近一个月的我来说,对自己来说需要思考很久或查阅资料的五道题。因为是初学者观看,所以这些题都先不引入函数。

一 求两数的最大公约数及最小公倍数

1·暴力穷举法

(1)如果大数可以整除小数,那么最大公约数就是小数。
(2)如果大数不能整除小数,那么让小数一直减一的同时原始的两个数都判断能不能整除这个逐渐减一的数,如果能,那么这个数就是最大公约数。代码如图:
在这里插入图片描述
分析:这里的代码把第一种情况和第二种情况直接合起来了,但是分析的时候就是按上面的分析。

2·辗转相除法

首先说下小学的知识:a/b=c 其中a是被除数,b是除数,c是商。
方法介绍:用大数对小数求余,若余数为0,则除数为最大公约数。若余数不为0,将此余数作为除数,小数作为被除数,重新求余,直到余数为0为止。此时的最大公约数为除数。在这里插入图片描述
这是一半的,另一半道理一样,情况为a<b。
还有两种方法,但我没有看,如果有兴趣,直接再CSDN搜索就能找到。

3·最小公倍数

当我们求出来最大公约数时,最小公倍数基本就已经出来了。因为最小公倍数=原来的两数相乘除以最大公约数。

二·求1000到2000间的润年

(1)首先我们先知道润年的定义:能被4整除但不能被100整除或者能被400整除.
(2)代码如图:在这里插入图片描述

三·在10个数中找到最大值,打印出最大值及下标

如图:在这里插入图片描述
解释:首先肯定是都比一次大小,因为不是全部排序,所以只需要有个中间值,让两两比较的数中的较大数放到中间值里再跟下面的数一次比较就好。因为要求下标,所以多了一条if语句,这是为了保留最大值的下标。如果有点不理解,下面这个更好理解,就是说你判断出了最大值(这个比较简单),现在你只需要找下标就行,那么你再重新找一遍下标就好了,如图:
在这里插入图片描述

四·对10个数进行由大到小排序

个人认为这就是上一题的升级版,不光要最大值(两两比较),还需要确定出顺序。也就是说多了一个for循环对他们每次两两比较的值排大小。当然,如果上一题去掉if那两行语句,那就可以确定的说就是多套了一个for循环让每个数之间从右向左都比较一次大小(不是光让这个数与最大数之间比较)。在这里插入图片描述

五·二分查找

介绍:二分查找(折半查找)可以大大提高计算机找数据的效率,每次pass掉一般的数,但是使用它有个前提,那必须是数组里的数按大小顺序排列,下面列举一个从小到大的数组。当然我举得数据较少,如果是上亿的数,那么效率就提升的特别大。
在这里插入图片描述
总结:这五道题都是比较简单的题,看完这些讲解相信你一定会掌握

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值