第六,七章学习笔记

第六章 C控制语句:循环

whlie 循环

语法格式:

while(条件) /* 条件为真/满足入口条件,执行循环 */
{
循环体
}

eg:
第六,七章学习笔记

注:此处用到scanf()函数返回值(0or1),给status赋值作为循环条件。也可以用if循环判断用户输入<y/n>作为循环条件。但效率不高。

关系运算符

第六,七章学习笔记
与python一致
判断浮点数时,由于计算机对浮点数会有舍入误差,会使本来在逻辑上相等的两个数,反而不等。
解决:使用fabs()函数,该函数返回一个浮点数的绝对值。

优先级和关系运算符

关系运算符的优先级比算数运算符低,比赋值运算符高。
关系运算符之间有两种不同的优先级
高优先级组:<<= >>=
低优先级组:== !=

第六,七章学习笔记

  • 1为真,0为假
  • 所有非0值为真,0为假
  • 关系表达式为真,求值为1;关系表达式为假,求值得0。

for循环

第六,七章学习笔记
语法格式:

for(初始化;测试条件;表达式更新)

  • 第一个表达式给计数器赋初值,第二个表达式表示计数器的范围,第三个表达式递增计数器。
  • 三个表达式之间用分号间隔,可省略一个或多个表达式(不能省略分号!!),只要在循环体中包含能结束循环的语句就行。

其他赋值运算符

+= -= *= /= %=
它们的含义即用法与python一样
第六,七章学习笔记

逗号运算符

把两个表达式连接成一个表达式,并保证最左边的表达式最先求值。
逗号运算符通常在for循环头的表达式用于包含更多的信息。
整个逗号表达式的值是右侧表达式的值

do while 循环(出口条件循环)

出口条件循环:即在循环的每次迭代之后检查测试条件,保证至少执行循环体中的内容一次
语法格式

do
简单或复合语句
while(循环条件);

用do while写的循环用while也能写出等价的程序,但会长一些
第六,七章学习笔记

数组

编号与python一样,声明数组时,方括号中的值指明数组元素个数,数组的第一个元素编号为0,第二个为1.

第7章C控制语句:分支和跳转

if语句

语法格式

if(判断条件)
语句块

if else语句(与python的else字句相同)

语法格式

if(判断条件)
语句块1
else
语句块2

多重选择else if

其用法与python一样

if(判断条件)
语句块1;
else if(条件)
语句块2;

else if(条件n)
语句块n;

getchar()和putchar()

对字符的输入/输出函数

getchar()函数不带任何参数,它从输入列队中返回下一个字符。下面的语句读取下一个字符输入,并把该字符的值赋给变量ch。
ch=getchar();
与scanf("%c",ch);语句效果相同

putchar()函数打印它的参数,把之前赋给ch的值作为字符打印出来
putchar(ch);
与printf(“%c”,ch);语句效果相同

相比scanf()和printf()它们更简洁

ctype.h系列的字符函数

C有一系列专门处理字符的函数,ctype.h头文件包含了这些函数的原型。这些函数只接受一个字符作为参数。如果该字符属于某特殊类型,就返回一个非零值(真),否则返回0(假)
第六,七章学习笔记

else与if配对

规则:如果没有{},else与离他最近的if配对,除非最近的if被花括号括起来。编译器忽略缩进

逻辑运算符

第六,七章学习笔记
也可用and / or / not 代表与/或/非(iso646.h头文件)
逻辑判断与python一样
同真与为真,同假或为假,非真假颠倒

优先级

!运算符优先于乘法运算符,与递增运算符相同,只比圆括号优先级低。
&&运算符的优先级比或高,但两者优先级都比关系运算符低,比赋值运算符高。

求值顺序

从左往右,一但发现有使整个表达式为假的因素,立刻停止求值。

条件运算符:?:

条件运算符需要三个运算对象,每个对象都是一个表达式。

语句1?语句2:语句3;

如果语句1 为真,整个条件表达式的值是语句2的值;否者是语句3的值
eg:
第六,七章学习笔记

循环辅助:continue和break

  • continue:三种循环都可使用continue语句,执行该语句,会跳过本次循环(迭代),并开始下一轮循环(迭代)
  • break:程序执行到循环体中的break,终止循环,继续执行下一阶段
    第六,七章学习笔记
    第六,七章学习笔记

多重选择:switch和break

语法格式:

switch(整型表达式){
case 常量1:
语句1;
case 常量2:
语句2;

case 常量n:
语句n;
default :
语句n+1;
}

break语句可以让程序离开switch语句,跳至switch语句后面的下一条语句。如果没有,程序从匹配标签开始执行到switch末尾。
第六,七章学习笔记

多重标签

语法格式:

switch(整型表达式){
case 常量1:
case 常量12:
语句1;
case 常量2:
case 常量22:
语句2;
default :
语句
}