C Primer Plus学习笔记——6~7章
第六章
While 循环语句
- 在测试条件后面单独加上“ ;”是空语句,它什么也不做。当所有的任务都在测试条件中完成后,不需要在循环体中做什么时,就可以使用空语句:while() ;
- fabs() 函数返回一个浮点值的绝对值。
- 测试条件可以是真假判断,当条件值为0时,测试条件为假,其余非零值均为真。例如:while(g!=0)和while(g)测试条件相同。
优先级
算术运算符>关系运算符>赋值运算符
for循环语句
- 第一个表达式是初始化
- 第二个表达式是测试条件
- 第三个表达式执行更新
- 形式:for(initialize;test;update)statement 其中在test为假或0之前。重复执行statement部分。
其他赋值运算符(+=、-=、*=、/=、%=)
这些运算符的优先级和赋值号的优先级相同。
逗号
- 作为分隔符:char a,b;
- 作为运算符:把两个表达式连接成一个表达式并保证最左边的表达式最先求值,整个逗号表达式的值是逗号右侧表达式的值。
- price=10,20; 其中20是一个单独的语句,price的值为10
- price=(10,20)其中赋给price的值是逗号运算符右侧表达式的值,即20
出口条件循环:do while
while循环和for循环都是入口条件循环,即在循环的每次迭代之前检查测试,所以有可能根本不执行循环体中的内容。
而do while 是出口条件循环,也就是说在循环的每次迭代之后检查测试条件,保证至少执行循环体中的内容一次。
注意:do while循环以分号结尾,结构如图:
如何选择循环
首先要确定需要入口条件循环还是出口条件循环,通常,入口条件循环用的比较多。
嵌套循环
嵌套循环是指在一个循环内包含另一个循环,嵌套循环常用于按行和列处理数据,也就是说,一个循环处理所有的行,另一个循环处理一行的所有列。
嵌套循环包括内层循环和外层循环。
数组引入
例题
使用带有返回值的函数
声明函数、调用函数、定义函数、使用关键字return都是定义和使用带返回值
小结
使用循环时应注意:
- 循环的测试条件要能使循环结束
- 确保循环测试中的值再首次使用之前已被初始化;
- 确保循环再每次迭代都更新测试的值
- C编译器不会检测数组下标是否有效,要自己留心。
- do while 语句提供了出口条件循环。
- while语句和for语句提供了入口条件循环,其中for循环特别适用于需要初始化和更新的循环。
- 使用逗号运算符,可以在for循环中初始化和更新多个变量。
第七章
if else 语句
格式:if (expression1)
statement1
else
statement2
注意:else与其距离最近的if配对。
介绍getchar()和putchar()
不需要转换说明,他们只处理字符
ch=getchar()
把输入参数直接赋值给变量ch
putchar(ch)
直接打印ch对应的字符
ctype.h系列的字符函数
下表列出了ctype.h头文件中的一些函数。
逻辑运算符
逻辑运算符的运算对象通常是关系表达式
求值顺序是从左到右,一旦发现有使整个表达式为假的因素就不会再进行下去。
逻辑运算符的优先级比关系运算符低
C中的三种逻辑运算符如下
逻辑运算符 | 含义 |
---|---|
&& | 与 (同真为真) |
丨丨 | 或(一真即真) |
! | 非 |
其中头文件 iso646.h 包含了可以替代逻辑运算符的拼写
可用 and 代替 &&
可用 or 代替 ||
可用 not 代替!
优先级:
!运算符的优先级很高,比乘法的优先级还高,与递增运算符优先级相同,只比圆括号的优先级低
&&运算符优先级比||运算符优先级更高 但逻辑运算符都比算术运算符优先级更低。
条件运算符“ ?:”
需要三个运算对象,称为三目运算符。是C中唯一一个三元运算符。优先级仍然先于赋值运算符。
a?b:c
解释:
if(a)
b
else
c
例:把两个之中最大的值赋给变量max
max=(a>b)?a:b
循环辅助:continue 和 break
continue:执行到该语句时,会跳过本次迭代的剩余部分,直接进行下一轮循环。
break:终止包含他的循环,并进行到下一阶段。
switch语句
break在switch语句中的作用是让程序跳出switch语句,进入下一部分。
必须要有break语句跳出switch循环
switch小结: