(1)if语句
“首当其冲”肯定就是if,大概形式是:
其中()中表达式为真及非零,则执行后面的语句,如果为假及为零,不执行后面的语句。如果有else则为一个分支语句,当不满足if后面的表达式,就判断是否满足else后的表达式,为真就执行,为假就不执行,例如下面这个例子:
也就是当输入值小与18就输出else语句中的“未成年”;还有,不加大括号的话,if 和else 默认控制一条语句;
嵌套if,if与离他最近的else组和匹配,因此要注意不能让else悬空,找不到匹配的if;
例如下面这个例子:第二个则是第一个加了大括号,更清楚明了
(2)关系操作符
< ;> ;<= ;>= ;== ;!=
首先注意==和=不同,==是判断是否相等,而=是赋值;!=是和表达结果相反,及如果相等及为假,不相等为真;多个关系运算符不宜连用,例如:
i<j<k;(错) 应该为 i<j&&j<k
(3)条件操作符
形式如下 exp ?exp2 :exp3 ; 如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果 exp1 为假,exp3 计算,计算的结果是整个表达式的结果。例如:
当a大于5时,输出3,小于5时,输出-3;
(4)逻辑操作符
&&,||,!
!:逻辑取反运算符(改变单个表达式的真假)。
&&:逻辑与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。
||:逻辑或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。在&&和||中存在“短路”现象,例如
当month输入为0是及判断month>3为假,则不执行后面语句month<5;
(5)switch语句
switch与if对比,两个等效,例如:
注意:case后面的数字之间必须有空格;每⼀个 case 语句中的代码执⾏完成后,需要加上语句中 break ,才能跳出这个switch语句。如果没有break则会一直执行后面的语句,直到结束;例如:
输入1到5就会打印“工作日”,6,7则会打印休息日;
代码中的 switch 后的表达式中的值⽆法匹 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加⼊ default ⼦句,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实际需求的就可以。例如:
(6)while循环
⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语 句,语句执⾏完后再继续判断,是否进⾏下⼀次判断。例如:
这就是一个打印1-10的循环,判断为i<=10,当i>10则跳出循环;
(7)for循环
for(表达式1;表达式2;表达式3)
表达式1⽤于循环变量的初始化 ; 表达式2⽤于循环结束条件的判断,如:=>,<; 表达式3⽤于循环变量的调整,如++,--;例如:打印1-10(与上面那个while循环结果一样)
但是for 循环的三个部分非常集中,便于代码的维护,而如果代码较多的时候while 循环的三个部分就⽐较分散,所以从形 式上 for 循环要更好⼀些。
(8)do-while循环
d o while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执行while后的判断表达式为真,就会
进⾏下⼀次,表达式为假,则不再继续循环。 特点就是会先执行一次,在判断;例如:
(9)循环中的break和continue
break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执行。
continue 的作⽤是跳过本次循环中 continue 后边的代码,在 for 循环和 while 循环中有所差异的。
break:
打印了1,2,3,4后,当i等于5的时候,循环在 break 的地方终止,不再打印,不再循环。
contniue:
#include<stdio.h>
int main()
{
int i=0;
while(i<10)
{
if(i==5)
continue;
printf("%d",i);
i=i+1;
}
return 0;
}
continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成死循环。
(10)goto语句
#include <stdio.h>
int main()
{
printf("hehe\n");
goto next;
printf("haha\n");
next:
printf("跳过了haha的打印\n");
return 0;
}
goto 语句和跳转标号, goto 语句可以实现在同⼀个函数内跳转到设置好的标号处。