在c语言中分支语句有if语句和switch语句。
if语句的语法结构
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
如果表达式1真,则执行语句1;如果表达式2真,则执行语句2;如果表达式1和2都假,则执行语句3
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
printf("成年\n");
else
{
printf("未成年\n");
printf("不能谈恋爱");
}
//如果没有大括号if和else只能控制一条语句
return 0;
}
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("未成年\n");
else if (age >= 18 && age < 26)//其实在这里&&前面的语句是可以不写的逻辑也是通顺的
printf("青年\n");
else if (age >= 26 && age < 40)
printf("中年\n");
else if ( age > 40 && age < 60)
printf("中老年\n");
else
printf("老年\n");
if (18 <= age < 26)
printf("有问题");//发现无论输入什么这个语句都会执行
//原因在于18<=age<26语句执行逻辑是这样的首先18<=age得到的结果可能是真或者假
//也就是1或者0,1和0都比26小所以会执行
//这时候需要用并列语句&&
return 0;
}
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("呵呵");
else
printf("haha");
//什么也不打印因为else和他里的最近的if匹配
return 0;
}
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
{
printf("呵呵");
}
}
else
{
printf("haha");
}
//打印haha
return 0;
}
//这样才是好的代码风格
判断一个数是奇数还是偶数
int main()
{
int a = 0;
scanf("%d", &a);
if (a % 2 == 0)
{
printf("偶数");
}
else
{
printf("奇数");
}
return 0;
}
打印一百以内的奇数
int main()
{
int a = 0;
for (a = 1; a <= 100; a++)
{
if ( 1 == a % 2 )//好的编码习惯,==前写常数,后面写表达式,以防编码错误不提示
printf("%d ", a);
}
return 0;
}
switch也是一种分支语句;常用于多分支情况。
switch语法结构为
switch(整型表达式)//其实字符型也可以
{
case 整型表达式://多个case语句
语句;
}
int main()
{
int a = 0;
scanf("%d", &a);
switch(a)
{
case 1:
printf("星期1 ");
case 2:
printf("星期2 ");
case 3:
printf("星期3 ");
case 4:
printf("星期4 ");
case 5:
printf("星期5 ");
case 6:
printf("星期6 ");
case 7:
printf("星期7 ");
}
//如果代码是这样的话发现输入几就会将几和后面的语句都打印出来
//比如输入5就会打印星期5 星期6 星期7
//原因在于没有break
//case被视为一个入口只要进入后面的语句都会执行
//break叫跳出或者停止
return 0;
}
在switch语句中,必须搭配break使用才能实现真正的分支。
//int main()
//{
// int a = 0;
// scanf("%d", &a);
// switch (a)
// {
// case 1:
// printf("星期1 ");
// break;
// case 2:
// printf("星期2 ");
// break;
// case 3:
// printf("星期3 ");
// break;
// case 4:
// printf("星期4 ");
// break;
// case 5:
// printf("星期5 ");
// break;
// case 6:
// printf("星期6 ");
// break;
// case 7:
// printf("星期7 ");
// break;
// }
// return 0;
//}
break的实际效果是把语句列表分成不同的分支部分
编程时养成在最后一个case语句后也加上一个break语句的好习惯。
default语句适用于表达的值与所有的case设置的值都不匹配的时候
当switch表达式的之并不匹配所有case标签的值时,这个default子句后面的语句就会执行
每个switch语句中只能出现一条default语句
int main()
{
int a = 0;
scanf("%d", &a);
switch (a)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
default:
printf("输入错误\n");
break;
//default可以写在语句列表的任何位置
}
return 0;
}
下面是我自己写的求三数中间值的代码,因为是初学者所以不太会进行优化,大家看个乐
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);
if (a > b)
{
if (a < c)
printf("%d", a);
else if (b > c)
printf("%d", b);
else
printf("%d", c);
}
else
{
if (b < c)
printf("%d", b);
else if (a > c)
printf("%d", a);
else
printf("%d", c);
}
return 0;
}