逻辑运算符和逻辑表达式
&&逻辑与
||逻辑或
!逻辑非
!大于 算数运算符 大于 关系运算符 大于 &&和|| 大于赋值运算符
与运算符&&和或运算符||均为双目运算符。具有左结合性。非运算符!为单目运算符, 具有右结合性。
“&&”和“||”低于关系运算符,“!”高于算术运算符。
if语句
if(表达式)
{
语句1;
}
else
{
语句2;
}
if语句的嵌套
if(表达式)
{
if(表达式)
{
语句1;
}
else
{
语句2;
}
}
else
{
语句3;
}
条件运算符和条件表达式
表达式1?表达式2:表达式3
eg:
if(a>b) max=a;
else max=b;
//可用条件表达式写为:
max=(a>b)?a:b;
//执行该语句的语义是:如 a>b 为真,则把 a 赋予 max,否则把 b 赋予 max。
使用条件表达式时,还应注意以下几点:
- 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。 因此 max=(a>b)?a:b 可以去掉括号而写为 max=a>b?a:b
- 条件运算符?和:是一对运算符,不能分开单独使用。
- 条件运算符的结合方向是自右至左。 例如: a>b?a:c>d?c:d 应理解为 a>b?a:(c>d?c:d) 这也就是条件表达式嵌套的情形,即其中的表达式 3 又是一个条件表达式。
SWITCH语句
switch(表达式)
{
case 常量表达式 1: 语句 1;
case 常量表达式 2: 语句 2;
…
case 常量表达式 n: 语句 n;
default : 语句 n+1;
}
计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与 某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有 case 后的语句。如表达式的值与所有 case 后的常量表达式均不相同时,则执行 default 后 的语句。
eg:
输入1-7的数字,输出时星期几
int main()
{
int a;
printf("input integer number: ");
scanf("%d",&a);
switch (a)
{
case 1:printf("Monday\n");break;
case 2:printf("Tuesday\n"); break;
case 3:printf("Wednesday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n");break;
case 6:printf("Saturday\n");break;
case 7:printf("Sunday\n");break;
default:printf("error\n");
}
}
循环语句
while语句
while(判断条件)
{
语句;
}
//直到不满足条件后,结束循环
do
{
循环体;
}
while(条件);
//先执行循环体一次后,再按段条件。所以do-while结构至少执行一次循环体;
//直到不满足条件后,结束循环
for语句
for(表达式1;表达式2;表达式3)
{
循环体;
}
执行过程如下:
- 先求解表达式 1。
- 求解表达式 2,若其值为真(非 0),则执行 for 语句中指定的内嵌语句,然后执行下面 第 3)步;若其值为假(0),则结束循环,转到第 5)步。
- 求解表达式 3。
- 转回上面第 2)步继续执行。
- 循环结束,执行 for 语句下面的一个语句。
break和continue语句
break语句
当 break 语句用于 do-while、for、while 循环语句中时,可使程序终止循环而执行循环 后面的语句, 通常 break 语句总是与 if 语句联在一起。即满足条件时便跳出循环。
continue语句
continue 语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue 语 句只用在 for、while、do-while 等循环体中,常与 if 条件语句一起使用,用来加速循环。
数组
在C语言中使用数组必须先进行定义。 一维数组的定义方式为: 类型说明符 数组名 [常量表达式]; 其中: 类型说明符是任一种基本数据类型或构造数据类型。 数组名是用户定义的数组标识符。 方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
数组元素的一般形式为:
数组名[下标]
其中下标只能为整型常量或整型表达式。如为小数时,C 编译将自动取整。 例如: a[5] a[i+j] a[i++]