Hello,everyone! 害, forever好久没写博客了,最近有时间又来写写,纯属小白,写博客只为更好的记忆和理解,哈哈哈!也希望我自己的理解能给大家带来一点帮助!如有不足之处,请大家多多指教!
上一篇是直接放了一段代码,然后一步一步分析代码,走进C语言初识,这一篇我们就直接到分支结构,当然C初识,还有很多知识点,我会在后面的每一篇里遇到问题再详细介绍!
1. if分支语句
语法结构:
1.以下是单纯的 if 语句,如果表达式为真,执行语句;否则为假时,不执行语句;在C语言中0为假,非0为真。
if 结构:
if(表达式)
{
语句;
}
if 结构程示例:
#include
int main()
{
int a=8,b=24;
if(a<b)
{
printf("%d",b);
}
return 0;
}
2.以下是 if-else 语句和其流程图,该语句用于实现双层分支结构,根据表达式的值选择语句1或语句2中的一条进行执行。首先要求表达式的值为真时执行语句1;否则为假时执行语句2。
if-else 结构:
if(表达式)
{
语句1;
}
else
{
语句2;
}
//输出两个数中最大的那个
#include //头文件调用
int main()//主函数(main)
{
int a=0,b=0;//定义整型(int)变量
scanf("%d %d",&a,&b);//任意输入a,b两个值
if(a>b)//如果a>b为真就执行输出a
{
printf("%d\n",a);//printf为输出函数
}
else//否则就执行输出b
{
printf("%d\n",b);
}
return 0;//返回int整型
}
3.以下是else-if语句以及流程图,该语句是实现多层分支语句,如果表达式1为真,就执行语句1,否则就开始往下判断表达式2;如果表达式2为真,就执行语句2,否则就继续往下执行表达式3;依次往下判断……
else-if结构:
if(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
……
else if(表达式n-1)
{
语句n-1;
}
else
{
语句n;
}
// 成绩转换,将百分制转换成五分制
#include
int main()
{
int score=0;
scanf("%d",&score);
if(score>=90 && score<=100)//&&该运算符是“并且”,“||”这是或运算符
{
printf("A\n");
}
else if(score>=80 && score<90)//else if后面可以写条件判断
{
printf("B\n");
}
else if(score>=70 && score<80)
{
printf("C\n");
}
else if(score>=60 && score<70)
{
printf("D\n");
}
else
{
printf("E\n");
}
return 0;
}
4.以下是if-else嵌套语句及流程图,该语句用于嵌套判断,但一般建议嵌套不要超过三层,嵌套过多,代码的可读性就会下降,后期维护也会提高难度。所以一般尽量避免嵌套过多。if嵌套时,要注意 if 和 else 的配对问题,C语言规定,else 总是与它前面最近的 if 配对。大家在最初书写的时候就要养成良好的编程习惯,对齐、空格和{ }成对书写都要注意。
if-else嵌套结构:
if(表达式1)
{
if(表达式2)
{
语句1;
}
else
{
语句2;
}
}
else
{
if(表达式3)
{
语句3;
}
else
{
语句4;
}
}
//成绩等级判断
#include
int main()
{
int n = 0;
scanf("%d", &n);
if (n >= 60)
{
if (n >= 90 && n <= 100)//if-else 语句中嵌套else-if语句
{
printf("优秀\n");
}
else if (n >= 80)
{
printf("良好\n");
}
else if(n >= 70)
{
printf("一般\n");
}
else
{
printf("及格\n");
}
}
else
{
if (n < 0)//if-else语句中嵌套if-else语句
{
printf("NOT FOUND\n");
}
else
{
printf("不及格\n");
}
}
return 0;
}
以上就是C语言中的if分支语句及其结构,if 一般使用的比较多,无论是哪种 if 语句其实格式都是一样 if (表达式),如果表达式正确就执行,否则就不执行或执行分支。
2.switch分支语句:
switch也是一种分支语句,一般用于多且明确的情况,对于这种情况多的其实用 if 也可以完成,只不过需要很多 if 语句来完成,就显得程序很杂,很不好看,因此就有了 switch 分支语句。
以下是 switch (含有break)语句及流程图:break 代表终止的意思,遇到break则意味着终止当前的 switch 。
//switch(含break)结构
switch(常量表达式)
{
case 表达式1:语句1;break;
case 表达式2:语句2;break;
case 表达式3:语句3;break;
……
case 表达式n:语句n;break;
default:语句n+1;break;
}
//星期查找
#include
int main()
{
int n = 0;
scanf("%d", &n);
switch (n)
{
case 1:printf("Monday\n"); break;//
case 2:printf("Tuesday\n"); break;
case 3:printf("Wednesday\n"); break;
case 4:printf("Thursday\n"); break;
case 5:printf("Friday\n"); break;
case 6:printf("Saturday\n"); break;
case 7:printf("Sunday\n"); break;
default:printf("NOT FOUND\n");//这里break可有可无
}
return 0;
}
以下是 switch (不含break)语句及流程图:
//switch(不含break)结构
switch(常量表达式)
{
case 表达式1:语句1;
case 表达式2:语句2;
case 表达式3:语句3;
……
case 表达式n:语句n;
default:语句n+1;
}
#include
int main()
{
int n = 0;
scanf("%d", &n);
switch (n)
{
case 1:printf("Monday\n");
case 2:printf("Tuesday\n");
case 3:printf("Wednesday\n");
case 4:printf("Thursday\n");
case 5:printf("Friday\n");
case 6:printf("Saturday\n");
case 7:printf("Sunday\n");
default:printf("NOT FOUND\n");
}
return 0;
}
如果n=3,输出示例为:
以上是 switch 分支语句。如果没有 break 就会出现 case 穿透,case 就会一直执行,直到遇见 break 结束或整个 switch 结束。
总结:(1) if 语句适用于复杂逻辑进行判断情形,而switch适用于对离散值进行判断的情形;
(2)if 和 switch 可以互相替换,switch 用于多分支时更加简洁。
今天的内容不太多,主要详细介绍分析了 if 相关语句结构和 switch 语句结构,希望对大家有所帮助,如果文章中有什么不足或错误之处,望大家批评指正。
最后送大家一句话:上山的人永远不要嘲笑下山的人,因为他们比你们更早辉煌过;山顶的人永远不要嘲笑山下的人,因为你永远不知道他们哪天就会登上山顶。