分支语句 1.if
1.分支语句
1.1if语句
if语句的三种形式
1.if 2. if 3. if
else else if
else
int main()
{
int n = 0;
scanf("%d", &n);
if (n < 18)
{
printf("青少年\n");
}
else if (n >= 18 && n < 30)
{
printf("青年\n");
}
else if (n >= 30 && n < 50)
{
printf("中年\n");
}
else if (n >= 50 && n < 60)
{
printf("中老年\n");
}
else
{
printf("老年\n");
}
return 0;
}
1.11表达式中的值,0表示假,1表示真
int main()
{
int n = 0;
scanf("%d", &n);
if (18 <= n < 30)
//此时先判断n是否大于等于18,8<18,不成立返回0
//再判断0是否小于30,0<30成立返回1, 非0表示真执行if
{
printf("青年\n");
}
return 0;
}
1.12if语句中大括号的作用
if else是一条语句。在没有大括号时if和else后面只能接一条语句
int main()
{
int n = 0;
scanf("%d", &n);//输入8
if (n >= 18)
printf("成年了\n");//在没用大括号时只能控制第一条printf语句
//第二条printf语句不受if语句控制
printf("找工作了\n");
return 0;
}
1.13else和if的匹配讲究就近原则
注意if else语句在写时最好应该有大括号这样更规范
int main()
{
int a = 0, b = 2;
if (a == 1)//a不等于1所以不执行里面的if else语句,所以不输出
if (b == 2)
printf("hehe\n");
else
printf("haha");
//if else匹配无大括号时有就近原则,所以else和第二个if匹配
return 0;
}
1.13if语句的两个练习
1.判断一个数是否为奇数
//奇数也就是不能被2整除的数,除以2余数为1
int main()
{
int n = 0;
scanf("%d", &n);
if (n % 2 == 1)
{
printf("%d这个数是素数\n", n);
}
return 0;
}
2.输出1~100之间的奇数
int main()
{
int i = 1;
for (i = 1; i <= 100; i++)
//这里用到了循环,会在后面提
{
if (i % 2 == 1)
{
printf("%d ", i);
}
}
return 0;
}
1.2switch语句
1.21Switch语句中break的用法
break的作用把语句列表划分为不同的分支部分
int main()
{
int day = 0;
scanf("%d", &day);
//这里输入1到7之间的数字
switch (day)
{
case 1:
printf("星期一\n");
case 2:
printf("星期二\n");
case 3:
printf("星期三\n");
case 4:
printf("星期四\n");
case 5:
printf("星期五\n");
case 6:
printf("星期六\n");
case 7:
printf("星期天\n");
}
return 0;
}
有break时
int main()
{
int day = 0;
scanf("%d", &day);
//这里输入1到7之间的数字
switch (day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
}
return 0;
}
当以1到5是工作日,6、7为休息日时,代码也可以简化
int main()
{
int day = 0;
scanf("%d", &day);
//这里输入1到7之间的数字
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
2.22default的作用
当switch中的值和case所有值对应不上是执行default
default后面应该再加上break
int main()
{
int day = 0;
scanf("%d", &day);
//这里输入1到7之间的数字
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("这一天与星期无关\n");
break;
}
return 0;
}
练习
读代码,算出m,n的值
int main()
{
int n = 1,m = 2;
switch(n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch (n)
{
case 1:
n++;
case 2:
m++;
n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("%d,%d\n", m, n);
return 0;
}
2.循环语句
2.1while循环
while循环主要有三部分
1.初始化部分 2.判断部分 3.调整部分
//打印1到10的数字
int main()
{
int i = 1;//初始化部分
while (i <= 10)//判断部分
{
printf("%d ", i);
i++;//调整部分
}
return 0;
}
2.11while语句中的break
while循环中break是永久的终止循环,即一但执行break直接跳出循环
//打印1到10的数字
int main()
{
int i = 1;//初始化部分
while (i <= 10)//判断部分
{
if (i == 5)
{
break;
//当i=1,2,3,4时不执行if里面部分
//当i=5时,执行break,跳出循环
}
printf("%d ", i);
i++;//调整部分
}
return 0;
}
2.12while循环中的continue
while循环中的continue的作用:是跳过本次循环后面的代码直接去判断部分
//打印1到10的数字
int main()
{
int i = 1;//初始化部分
while (i <= 10)//判断部分
{
if (i == 5)
{
continue;
//当i=1,2,3,4时不执行if里面部分
//当i=5时,执行continue,跳过本次循环后面的代码,直接去判断部分
//此时i依然是5,陷入了死循环
}
printf("%d ", i);
i++;//调整部分
}
return 0;
}
当调整部分在放在if语句前面时
//打印1到10的数字
int main()
{
int i = 1;//初始化部分
while (i <= 10)//判断部分
{
i++;//调整部分
//当i=1进入循环时先自加
if (i == 5)
{
continue;
//当i=2,3,4时不执行if里面部分,此时打印了2、3、4、
//当i=5时,执行continue,跳过本次循环后面的代码,直接去判断部分,然后i自加变为6
//i=6、7、8、9、10,当i=10时依然进入循环,自加变为11,打印11进入判断部分不成立退出循环
}
printf("%d ", i);
}
return 0;
}
2.2for循环语句
for循环语句也有三个部分
1.初始化部分 2.判断部分 3.调整部分
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
1、2、3、4表示执行次序
2.21for循环语句中的continue
在for循环中,如果遇到continue,会跳过continue后边的代码,直接去循环的调整部分和while循环中的continue有些区别的,while是跳过后面的代码去判断部分
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
{
continue;
//先打印1、2、3、4,当i=5是跳过本次循环后面的代码去调整部分
//此时i=6,继续打印6,7,8,9,10
}
printf("%d ", i);
}
return 0;
}
2.22for循环语句中的break
break在for循环中也是直接终止循环,只要遇到break,循环就直接结束,break在while循环和for循环中一样
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
{
break;
//先打印1、2、3、4,i=5时直接终止循环
}
printf("%d ", i);
}
return 0;
}
for循环的一些变种
代码会一直循环
int main()
{
int i = 0, j = 0;
for (; i < 3; i++)
{//初始化部分省略i=0进入循环,执行第二个for循环
for (; j < 3; j++)
{//i=0时,j=0、1、2都打印hehe,再自加变为3,不打印
//i=1时,因为没用初始化部分j=3,直接跳出,i=2时同理
//所以打印了三次hehe
printf("hehe\n");
}
}
return 0;
}
2.3do while循环
do while循环也可以看作三部分
1.初始化部分 2.调整部分 3.判断部分
int main()
{
int i = 1;//初始化部分
do {
printf("%d ", i);
i++;//调整部分
} while (i <= 10);//判断部分
return 0;
}
2.31 do while语句中的break
do while循环的break和while循环中的相同都是直接终止循环
int main()
{
int i = 1;//初始化部分
do {
if (i == 5)
{
break;
//先打印1、2、3、4,当i=5时执行break直接终止循环
}
printf("%d ", i);
i++;//调整部分
} while (i <= 10);//判断部分
return 0;
}
2.32 do while语句中的continue
do while循环中的continue和while循环中的continue作用是相同的
int main()
{
int i = 1;//初始化部分
do {
if (i == 5)
{
continue;
//先打印1、2、3、4,当i=5时执行continue即跳过本次循环后面的代码去判断部分
//此时i始终等于5,陷入死循环
}
printf("%d ", i);
i++;//调整部分
} while (i <= 10);//判断部分
return 0;
}
把判断部分放在if前面时
int main()
{
int i = 1;//初始化部分
do {
i++;//调整部分
//i=1时直接自加变为2,打印2、3、4。
if (i == 5)
{
continue;
//当i=5时执行continue即跳过本次循环后面的代码去判断部分
//此时i等于5,再次进入循环然后自加变为6打印6、7、8、9、10、11
}
printf("%d ", i);
} while (i <= 10);//判断部分
return 0;
}
3.goto语句
goto语句就是跳过goto语句后面的语句直接去
int main()
{
printf("hehhe\n");
goto flag;
printf("haha\n");
flag:
printf("wuwuwu\n");
//跳过goto后面的语句直接去flag部分执行
return 0;
}