分支和循环语句
分支语句
-
if
-
swich
循环语句
-
while
-
for循环
-
do-while
什么是语句?
c语言中,由一个分号隔开的就是一条语句
printf("HH"); 1+1;
分支语句(选择结构)
如果你好好学习,校招就能拿到offer 如果不好好学习,毕业等于失业
选择结构就和我们面临的选择一样,选择不一样结果也就不一样,而且两种结果只能获得其中的一种
if语句
语法结构
if(表达式) 语句; if(表达式) 语句; else 语句; if(表达式1) 语句1; else if(表达式2) 语句2;
如果表达式为真,则后面的语句会执行,在c语言中,0表示假,非0也就是除了0之外的全表示真;
一般如果if后面只有一条语句的时候,则可以省略代码块{}。但是if后面有多条语句时,必须使用代码块括号。否则会导致改变代码的意思 如下所示,如果不适用代码块括号。在任何情况下都会输出年龄。不满足只输出成年年龄的需求。
int main() { int age=18 if(age==18) printf("我叫xxx"); printf("我今年%d",age); return 0; } int main() { int age=18 if(age==18){ printf("我叫xxx"); printf("我今年%d",age); } return 0; }
在使用if的时候可以使用else搭配,else会与最近的if进行匹配,与else所在的位置无关,如下所示,else所对应的语句是与if(b==2)匹配的
#include <stdio.h> int main() { int a = 0; int b = 2; if(a == 1) if(b == 2) printf("hehe\n"); else printf("haha\n"); return 0; } //这样写使代码更加清晰 int main() { int a = 0; int b = 2; if(a == 1) { if(b == 2) { printf("hehe\n"); } } else { printf("haha\n"); } return 0; }
练习1.判断一个数是否为奇数
int main(){ int b; scanf("%d",&b); if(b%2){ printf("%d是奇数",b); }else printf("%d是偶数",b); }
练习2. 输出1-100之间的奇数
int main(){ int i=0; while(++i<100){ if(i%2)printf("%d ",i); } }
switch语句
switch语句也是一种分支语句。 常常用于多分支的情况
比如: 输入1,输出星期一 输入2,输出星期二 输入3,输出星期三 输入4,输出星期四 输入5,输出星期五 输入6,输出星期六 输入7,输出星期七,如果写成if-else的形式,那就过于复杂了,所以就有了switch语句。 switc(整形表达式){ 语句项 } 语句项是一些case语句 case 整形常量表达式: 语句; 在switch中,我们没法实现分支,搭配break才能实现真正的分支
default子句 如果整形表达式没有匹配到对应的case,程序并不会报错,而是完成switch继续向下执行。但是你如果想知道是否有对应的case匹配,便可增加一条default语句,deafult语句可以在任何一个case标签可以出现的位置,当没有case可以匹配整形表达式时,会执行default后面的语句
循环语句
-
while
-
for
-
do-while
while循环
if语句是满足条件执行if后面的语句,不满足则不执行后面的语句。while循环则是满足条件会一只反复执行while后面的语句,直到条件不满足为止,while循环需要自己控制条件的改变,否则会造成死循环 while(表达式) 循环语句;
在屏幕打印1-10的数字
int main(){ int i=1; while(i<=10)printf("%d ",i++); }
break和continue
break可以结束当前的循环。直接终止循环。continue只是跳出本次循环,不执行后面的内容直接跳到下一次循环的开始。
for循环
for循环与while循环的区别是for循环可以给定一个初试变量,通过变量来控制循环的次数。大多用于便利数组元素
for(表达式1;表达式2;表达式3) 循环语句;
表达式1 表达式1为初始化部分,用于初始化循环变量的。 表达式2 表达式2为条件判断部分,用于判断 循环时候终止。 表达式3 表达式3为调整部分,用于循环条件的调整。
使用for循环 在屏幕上打印1-10的数字。
int main(){ // int i=1; // while(i<=10)printf("%d ",i++); for(int i=1;i<=10;i++)printf("%d ",i); }
do-while循环
与while循环的区别是,do-while会至少执行一次语句,先do在判断条件是否满足