C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种 结构的组合。
实现分支结构可以使用 if 、 switch ,实现循环结构使用for 、 while 、 do while 。
在计算机编程中,分支结构(Branching Structure)是一种基本的控制结构,用于根据条件的不同采取不同的操作或执行不同的代码块。分支结构允许根据条件的真假来决定程序的执行路径,是实现选择和决策的关键部分。
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。根据判断条件,循环结构又可细分为以下两种形式:先判断后执行的循环结构和先执行后判断的循环结构。
本文重点介绍分支语句,将在C语言-分支循环语句 (下)介绍循环语句。
最近学到此部分内容,希望带给你一点帮助。
目录
一,分支结构
1,if语句
1.1 if
if语句的语法形式如下
在C语言中,0为假,非0为真,那么如果表达式结果为0,则不执行已下语句,反之则执行已下语句。
下面一段代码显示if语句的使用
输入一个整数,判断是否为奇数
int main()
{
int num = 0;
//输入
scanf("%d", &num);
//判断
if (num % 2 == 1) //== 判断相等
printf("%d 是奇数\n", num);
return 0;
}
1.2 else
如果不符合if语句中的表达式,想要表达与if语句中相对的情况,那么就需要else,实现if...else...结构了。
#include <stdio.h>
int main()
{
int num = 0;
//输入
scanf("%d", &num);
//判断
if (num % 2 == 1) //== 判断相等
printf("%d 是奇数\n", num);
else
printf("%d 是偶数\n", num);
return 0;
}
1.3 分⽀中包含多条语句
if和·else中最多只能控制一条语句,要想同时控制2条语句,那就要使⽤ { } 括起来,同理else也可以使用 { },达到相同效果。
例如以下代码
#include <stdio.h>
int main()
{
int age = 0;//年龄
//输入
scanf("%d", &age);
if (age >= 18)
{
printf("成年\n");
printf("可以谈恋爱\n");
}
else
{
printf("未成年\n");
printf("不能早恋\n");
}
return 0;
}
1.4 嵌套if
if else 语句中, else 可以与另⼀个 if 语句连用,构成多重判断。
请看如下代码
#include<stdio.h>
int main()
{
int age = 0;
printf("请输入年龄:");
scanf("%d", &age);
if (age < 15)
printf("志于学\n");
else
{
if (age <= 30)
printf("而立\n");
else
{
if (age <= 40)
printf("不惑\n");
else
{
if (age <= 50)
printf("知天命\n");
else
{
if (age <= 60)
printf("耳顺\n");
else
{
if (age <= 70)
printf("知天命\n");
else
printf("从心所欲,不逾矩\n");
}
}
}
}
}
return 0;
}
但在种表达方式非常繁琐,我们可以使用另一种表达方式
#include<stdio.h>
int main()
{
int age = 0;
printf("请输入年龄:");
scanf("%d", &age);
if (age < 15)
printf("志于学\n");
else if (age <= 30)
printf("而立\n");
else if (age <= 40)
printf("不惑\n");
else if (age <= 50)
printf("知天命\n");
else if (age <= 60)
printf("耳顺\n");
else if (age <= 70)
printf("知天命\n");
else
printf("从心所欲,不逾矩\n");
return 0;
}
1.5 悬空else问题
有这样⼀条规则,else 总是跟最接近的 if 匹配
最后的运行结果是:什么也没有
这是为什么呢?
许多人看到不符合第一个if语句后,自然而然的想到执行else语句,但实际上 if...else 语句是嵌套在第⼀个成立,嵌套 if 和 else 是和第⼆个 if if 语句中的,如果第⼀个 if 语句就不 else 就没机会执行了,最终啥都不打印。
所以在我们看代码的时候,要注意if 和else的对应关系,不要仅仅注意if与else的对其情况,如果代码改成下⾯这样就更加容易理解了。
如果想要达到预期情况,这需要我们添加{ }将代码进行块化处理。
2,switch语句
除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重 se if 改成更易⽤、可读性更好的形式。
根据不同的expression表达式,从而执行不同的case分支,如果都不符合,就执行default语句。
相较于if...else...语句,在特定条件下,switch语句能大大简化程序,增强代码可读性.
例如已下判断星期几的代码:
int main()
{
int day = 0;
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;
}
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)//int short long ,long lng, char
{
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;
5.1 switch语句中的break
break在switch中的作用是跳出此语句,结束程序运行,
如果不加break,一旦expression满足case标签中的条件,从满足条件的case标签开始,对后面的case标签都进行操作直到default。
如果加了break,则break的作用是在相应的位置跳出整个循环
如下列代码
在case标签后没有加break,输入整数 123 ,余数应该是0,但运行结果仍然输出了 余数是 1 和余数是 2,这就是由于没有break来跳出switch语句,使程序继续进行。
如果在每个case标签后加上break,就可以按照预期进行,达到我们想要的结果。
如下:
综上,switch 语句中break 语句是⾮常重要的,能实现真正的分⽀效果。但 break也不是每个 case标签都得有,这就得根据实际情况来看了。
5.2 switch语句中的default
在我们使用switch语句的过程中,我们常常遇到switch后的表达式不匹配任何一个case标签,这时我们可以使用default字句。
提醒:default可以出现在switch语句中的任何位置
例如上文提到的判断星期几的问题
这里我们输入了1至7以外的数字,结果什么都没有 ,如果此时不想忽略其他,就可以使用default字句,输入了1至7以外的数字,就会执行default后面的语句。
//在switch语句中任意位置加上
default:
printf(“选择错误\n”);
break;
这里我们再次输入 9
得到我们想要的结果。
虽然default字句可以 添加在switch语句中的任意位置,但我们默认将其放在最后,阅读代码时更便捷,要养成一个良好的编程习惯。
标签:语句,case,else,break,switch,printf,C语言,分支 From: https://blog.csdn.net/xiaoxin_________/article/details/143026441