C++ For讲解与一本通平台讲解
C++ For讲解~for 是什么for 是 C++ 中的保留字(说了N遍),作用是极其常见的,每个程序都可能会有(废话)。所以学好 for 语句是十分重要的。(简单来说就是学不好就干不了什么)
for 有什么用
而 for 是一种循环,它可以重复执行其括号内的语句。大大节省了代码量。
例如,从 1 输出到 100,在没学过 for 语句之前是这么做的:
而学过循环后,是这么做的:
一眼望去,学过 for 语句会使程序更加轻巧。
for 语句教程
现在,我们来学习 for 语句。
下面是 for 语句的格式:
可能有些难理解,首先,控制变量初始化表达式 是指 初始化控制 for 语句执行的变量,也就是说,这里的变量用于确定 for语句是否执行,起到的是 定义 的作用。
然后,条件表达式 是指 判断条件是否成立,如果成立则执行,否则跳出循环,它起到了 停止循环 的作用。
较后,增量表达式 是指 循环执行中改变变量 ,它起到了 改变循环中的数据 的作用。
for 语句可以使用大括号括起来,以执行多个语句。
for 语句执行过程
首先,程序执行 for 语句分为已下几个步骤:
初始化了 for 语句的控制变量。
查看条件表达式,看看其是否成立,当成立时执行3,不成立则跳出整个 for 语句。
执行其内部语句。
根据增量表达式变化变量。
回到2。
for 语句实例
相信大家都明白了 for 语句怎样执行的了。
下面是 for 语句的一个实例:
这段代码可以看出,执行一次循环,i 就会增加 1,当 i 大于 n 时,就不满足条件表达式里面的条件了,随即跳出循环。输出 sum。(这是一个从 1~n 求和的代码)
其实 for 语句中的什么控制变量初始化表达式,条件表达式和增量表达式,都可以不填,因为它只是说明此变量专门用于判断 for 语句是否执行。所以就可以像这样:
这样的 for 语句虽然可以执行,但其会无限的执行下去。
又例如求和的哪道题,依照这样,可以把控制变量初始化表达式,条件表达式和增量表达式放在语句处。
这段代码与上面求和的代码作用相同,只不过是把控制循环的 i 的处理位置放在了别的地方。但是像这样的题,建议使用第一种方法,这种方法比较无聊,有空的地方就可以放 i,没必要在语句里放 i 。
信息学奥赛一本通的题目
2016 - 2019,1059 - 10842016:【例4.1】for循环求和
求和的题目已经当做示例讲过了,这里就不在多讲。
下面是代码:
讲~ 过~ 了~
2017:【例4.2】输出偶数
这题用 for 语句模拟从 1~n 的每一个数,在判断它是否为偶数,如果是偶数就输出,否则什么也不干。这里要用到之前学的 if 语句,不会的可以去我之前的 C++ If讲解与一本通平台讲解 来看看。(强行推荐)
下面是代码:
当然,这样是可以,但如果数据大了,就像 1000000000 这样,要是用一个个去枚举,计算机早就超时了,怎么办?
思考一下,从 1~n 的偶数有怎样的特征?
2,4,6,8,10...
是不是每隔一个数就是一个偶数呢?利用这个特点,可以做出时间复杂度相对较简单的代码。
代码如下:
这就是一种优化。
2018:【例4.3】输出奇偶数之和
Emmm...这题只是与上面的有亿点不同。仔细想想就可以得出,只要用一个 sum 去把每次算出的奇偶数累加就可以了。但是因为它有两项,所以要用特殊的方法处理。
代码如下:
与上一题类似。
2019:【例4.4】求阶乘
阶乘是什么?(只对不懂什么是阶乘的人的教程,懂了的可以不看)
阶乘与乘方不是一个东西,千万不要搞混了,阶乘指的是从 1~n 的所有整数的乘积
1*2*3*4*5*...*n=n!
阶乘是个十分神奇的东西...
1! = 1,2! = 2,3! = 6,4! = 24,5! = 120,6! = 720,7! = 5040,8! = 40320,9! = 362880
这里都还能接受
10! = 3628800,11! = 39986100,12! = 479001600,13! = 6227020800,14! = 87178291200,15! = 130767436800,16! = 20922789888000,17! = 355687428096000,18! = 64023373705728000,19! = 121645100408832000,20! = 2432902008176640000
到这里已经很大了,所以,阶乘不是一个很好算的东西。但是,出题者十分好,把阶乘定在了1<=n<=20,刚好,long long 可以装下。
20!=2432902008176640000<2(64次方)=18446744073709551616
20!=2432902008176640000>2(32次方)=4294967296
long long 存放的范围大于 20!,但 int 小了,所以这题用 long long 才行。
代码如下:
过~
1059:求平均年龄
平均年龄怎么求?用年龄总和 ÷ 人数。因为此题要用到浮点数,所以要用 float 。(当然double也行,但是 double 比较慢,可以用 float 时就尽量用 float)
代码如下:
这道题很简单,但是可能有人会有疑惑(吧,因为我之前也有,呵呵),for 语句中的输入是读一次就要求输入一次,每次输入的值都会覆盖当前的值。(以前不懂...)
1060:均值
与上一题类似,都是求平均值。
直接上代码:
过~~
1061:求整数的和与均值
就多了个求和。
下面是代码:
过~~~
1062:较高的分数
这题就是求较大值,靠的就是打擂台的方式,这种方式我在讲解 2056:【例3.7】较大的数 时就讲过了。而多个数据打擂台也是同样使用一个一个找的方法。
代码如下:
打擂台是找较大值的最简单的方式。
1063:较大跨度值
题目已经说了
较大跨度值 = 较大值减去**小值
所以,我们要做的就是找出较大值和**小值,然后用较大值减**小值。
代码如下:
过~~~~
1064:奥运奖牌计数
没什么好讲的,直接累加。
代码如下:
过~~~~~
1065:奇数求和
把 2018 改亿下就行了。
代码如下:
过~~~~~~
1066:满足条件的数累加
这就是吧上一题换了个条件,其他都一样。
代码如下:
过~~~~~~~
1067:整数的个数
很简单,定义三个变量,分别累加即可。
代码如下:
用 switch 试试吧。
1068:与指定数字相同的数的个数
改变一下判断就行了。
代码如下:
简单
1069:乘方计算
这题就是乘方了,不是阶乘。
代码如下:
其实可以用 c**th 中的 pow 函数的。(比较偷懒)
1070:人口增长
按照题意算即可。
代码如下:
弄清题意即可
1071:菲波那契数
使用迭代的方式向前拓展。
代码如下:
迭代拓展
1072:鸡尾酒疗法
算好即可。
代码如下:
输出的字符不能错了,错了是十分吃亏的。
1073:救援
找到求的方式,在有一些基础知识即可做出。
代码如下:
要算好,不能写错数字。
1074:津津的储蓄计划
这个题只要模拟好每个月的金钱变化,确保无误。
代码如下:
控制好每个月的金钱变化。
1075:药房管理
这道题是我卡的最久的...(其实是读不懂题目的样例...)
下面是代码:
用了数组,可能不好理解。
1076:正常血压
这题是求最长的持续时间,这是一个要注意的点。
下面是代码:
明白了题意就十分简单了。
1077:统计满足条件的4位数
利用对四位整数的按位分离,求出千,百,十,个位,再进行计算。
下面是代码:
分离是重点。
1078:求分数序列和
分数序列:
,其中
根据序列变化来做,代码如下:
跟着题意走,分数九十九;再来点细节,AC不再竭。(奇怪的顺口溜...)
1079:计算分数加减表达式的值
分数加减表达式:
单数时是加,双数时是减。
根据这个求出值即可。
代码如下:
简单的判断就可以带过此题。
1080:余数相同问题
这题用来枚举的...
代码如下:
暴力出奇迹...
1081:分苹果
此题较好的方法是第一个分 1 个,第二个分 2 个,第三个分 3 个...以此类推。
较后求出总共需要的苹果数量。
代码如下:
不公平的分法...
1082:求小数的某一位
这道题可以模拟我们做除法竖式时所做的事,也就是求商,余。
代码如下:
利用做除法竖式的过程可以轻易解决这个问题。
1083:计算星期几
这题所做的乘方运算太大,long long 都装不下,但是要确切的数字有什么用呢,它一直在一周(7天)内循环,只要求出距离今天过了几天就行了,所以,在求乘方时可以将它 mod 7。
下面是代码:
mod 7 是至关重要的一步。
1084:幂的末尾
与上一题相似,出来末尾的三个数,其他位置上的数不可能影响到后三位数,所以,我们每次只需保留后三位即可。
下面是代码:
较后的特判不能忘了。
好了,题目都讲完了。
转载:感谢您阅览,转载请注明文章出处“来源从小爱孤峰知识网:一个分享知识和生活随笔记录的知识小站”。
链接:C++ For讲解与一本通平台讲解http://www.gufeng7.com/niaolang/1845.html
联系:如果侵犯了你的权益请来信告知我们删除。邮箱:119882116@qq.com
上一篇: C++ If讲解与一本通平台讲解
下一篇: C++ 入门讲解