2.1.4 练习1
输入一个正的整数,逆序打印这个整数的每一位
例如:
输入: 1234 输出: 4 3 2 1
输入: 521 输出: 1 2 5
题目解析:
1. 要想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如1234%10得到4
2.要想去掉n的最低位,找出倒数第二位,则使用n = n / 10 操作就可以去掉最低位,如:n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第二位3
3.循环1和2两个步骤,在n变为0之前,就能得到所有的位
参考代码:
2.1.5 练习2
输入一个正整数,打印所有小于或等于这个数的正偶数
参考代码:
2.1.6 练习3
全部练习当中最好玩的一个
模拟游戏打boss时,攻击掉血的场景
参考代码:
2.2 for 循环
2.2.1 语法形式
for 循环是三种循环中使用最多的,for循环的语法形式如下:
//形式1
for(表达式1;表达式2;表达式3)
语句;
//形式2
for(表达式1;表达式2;表达式3)
{
语句;//如果循环体想包含更多的语句,需要加上大括号
}
表达式1用于循环变量的初始化
表达式2用于循环结束条件的判断
表达式3用于循环变量的调整
2.2.2 for 循环的执行流程
首先执行表达式1初始化循环变量,接下来就是执行表达式2的判断部分,表达式2的结果如果为0,则循环结束;表达式2的结果如果不等于0,则执行循环语句,循环语句执行完后,再去执行表达式3,调整循环变量,然后再去表达式2的地方进行判断,表达式2的结果是否为0,决定循环是否继续。
在整个循环的过程中,表达式1初始化部分只被执行一次,剩下就是在表达式2、循环语句、表达式3之间循环,直到表达式2的条件不满足,跳出循环。
2.2.3 for 循环的实践
练习:在屏幕上打印1~10的值
参考代码:
2.2.4 while和for对比
for 循环语句
while循环语句
for和while在实现循环的过程中都有初始化、判断、调整这三个部分,但是for循环的三个部分非常集中,便于代码的维护,而如果代码较多的时候while循环的三个部分就比较分散,所以从形式上来说for循环要更优一些。
2.2.5 for循环的特殊写法
2.2.5.1 for循环中的三个表达式可以选择性省略
判断部分被省略,意味着判断部分恒成立,可能会造成死循环
初始化条件可以选择性不写,系统会根据后续判断条件和调整代码,并结合前面初始化的变量自动填入初始化的数据。
2.2.5.2 C99标准中,for循环支持新写法
循环变量可以在初始化部分创建,这样写的循环变量,只能在循环内部使用,出了循环就不能使用了。这样处理,虽然看上去缩小了变量的适用范围,是不利于代码实现的,但是这样处理,多个循环,或者其他的代码想要使用同一个变量就不会互相干扰了,也存在他的益处。
2.2.5.3 多个变量控制for循环
初始化部分的b=0,a=10和调整部分的b++,a--是逗号表达式式。
逗号表达式,就是用逗号隔开的多个表达式
代码块
exp1,exp2,exp3,...,expN
逗号表达式从左向右依次进行,整个表达式的结果是最后一个表达式的结果
例子:
题解:c = 15
从左向右计算,其判断作用的是最右边的d>0
2.2.6 练习1
计算1~100之间3的倍数的数字之和
小小的优化,如果能直接产生3的倍数的数字就省去了多余的循环和判断
2.2.7 练习2
计算机银行存款结余
银行利息是3%,本金10000元
计算出5年中,每一年年底本金+利息的结余
参考代码:
2.3 do-while 循环
2.3.1 语法形式
在循环语句中 do-while 语句的使用最少,它的语法如下:
代码块
1 do
2 语句;
3 while(表达式);
while和for这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循环;而do-while循环则是先直接进入循环体,执行循环语句,然后再执行while后的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再进行循环。
2.3.2 do-while循环的执行流程
在do-while循环先执行图上的“语句”,执行完语句,再去执行“判断表达式”,判断表达式的结果不等于0,则继续循环,执行循环语句;判断表达式的结果为0,则循环结束。
所以在do-while语句中循环体是至少执行一次的,这是do-while循环比较特殊的地方。
2.3.3 do-while循环的实例
在屏幕上打印1~10的值:
一般do-while使用在循环体至少被执行一次的场景下,所以使用的少一些
2.3.4 练习1
输入一个正整数,计算这个整数是几位数
例如:
输入:1234 输出:4
输入:12 输出:2
输入:0 输出:1
z
这里并非必须要用do-while语句,但是这个代码就比较适合用do-while循环,因为n即使是0,也是1位数,也是要统计位数的。
2.3.5 练习2
1.写代码确保只能输入一个正整数,如果是0或者负数,则提示“输入错误,请输入正整数”,直到正确输入
2.然后计算这个整数是几位数
2.4 break和continue语句
再循环执行的过程中,如果某些情况发生的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了break和continue两个关键字,就是应用到这种场景中的。
break的作用是用于永久的终止循环,只要break被执行,直接就会跳出循环,继续往后执行
continue的作用是跳出本次循环中continue后面的代码,在for循环和while循环中有所差异
生活化举例:
比如,你和你的朋友在KTV唱歌,计划唱3个小时
1.遇到不喜欢的歌,直接跳过,继续唱下一曲,就是continue
2.如果突然停电了,即使时间还没到,也没法继续再唱了,就是break