分支语句(if、switch)
if、if else
简单的选择语句
#define _CRT_SECURE_NO_WARNINGS 1
int main(){
int input = 0; //输入的值
printf("如果再给你一次机会\n");
printf("你会好好学习吗(1/0)?");
scanf("%d",&input);
if(input ==1){
printf("好offer\n");
}else{
printf("苦力\n");
}
return 0;
}
控制台打印:
如果再给你一次机会
你会好好学习吗(1/0)?
//输入1时控制台打印:
好offer
//输入0时控制台打印:
苦力
悬空的else
int mina()
{
int a = 0;
if(a==1)
if(a==0)
printf("yes");
else
printf("no");
return 0;
}
Console:
不打印
从上面例子看出console不打印任何东西
是因为else的原则是就近原则,else跟的是最近的那一个if,也就是上面内层的那个if。
选择语句练习题:
1.判断一个数是否为奇数
2.输出1-100之间的奇数
题1:
1.判断一个数是否为奇数
int mian()
{
int a = 0;
scanf("%d",&a);
if(a%2==0){
printf("不是奇数");
}else{
printf("是奇数");
}
return 0;
}
题2:
2.输出1-100之间的奇数
int mian()
{
int i=0;
for(i=1; i<=100; i++){
if(i%2==0){
printf("%d",i);
}
}
return 0;
}
写法2:
int main()
{
int i=0;
for(i=1; i<=100; i+=2){
printf("%d",i);
}
return 0;
}
switch语句
语句格式:
switch(整形表达式)
{
case 整形表达式:
语句;
}
假如我输入一个天数,我想判断今天星期几,如果用if语句,就得连续使用多个if语句,还可能出现嵌套的情况,代码就不美观,效率低,而用switch语句,一层代码就足够使用,而且简洁美观。
例如:
我想知道我输入的数是星期几
int mian(){
int day =0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期1\n");
case 2:
printf("星期2\n");
case 3:
printf("星期3\n");
case 4:
printf("星期4\n");
case 5:
printf("星期5\n");
case 6:
printf("星期6\n");
case 7:
printf("星期天\n");
}
return 0;
}
如果我输入的是2
则Console:
2
星期2
星期3
星期4
星期5
星期6
星期天
这里要注意一个问题,我输入的是2,结果它从星期2到星期天都输出了,这是因为它虽然从case 2这个入口进去了,输出case 2的语句,但是它并没有收到指令停止输出,它会继续输出,直到程序完全结束。
所以,想要switch语句停下来,则需要用到break语句,来跳出这个循环,正确的代码应该如下:
int main(){
int day;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期1\n");
break;
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
case 7:
printf("星期天\n");
break;
}
return 0;
}
假如我输入的是3
Console:
3
星期3
假如我想要输入的1-5都是工作日,而6-7为休息日呢?
int mian()
{
int day;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
从这段代码可以看出,并不是每个语句后面都需要跟break语句,而break语句可以在你想要结束的时候把它添加上。
default子句
那么我如果输入了其他的数字,并不是1-7中的数字会怎么样呢?
假如我想要输入的是8
int main()
{
int day;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("%d",工作日);
break;
case 6:
case 7:
printf("%d",休息日);
break;
}
return 0;
}
Console:
8
可以看出输入8之后,控制台并没有打印出任何内容。其实超过这个范围,应该有一个default语句,来把不属于表达式中的值给一个反馈
int main()
{
int day;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("%d",工作日);
break;
case 6:
case 7:
printf("%d",休息日);
break;
default:
printf("输入的数字必须在1-7以内");
break;
}
return 0;
}
Console:
8
输入的数必须在1-7内