合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。
——老子 《德经》
目录
导语:
一、分支语句(选择结构)
引入:
1.1 if 语句
1.1.1 if 语句的语法结构:
1.1.2 演示代码及详讲
1.1.3报错原因探究:
1.2 switch 语句
1.2.1 switch 语句结构
1.2.2演示代码及详讲
结语:
导语:
C语言是一门结构化的程序设计语言,结构又分为顺序结构、选择结构与循环结构。 在前面的文章对于分支与循环有了简单的介绍,今天我们就正式介绍一下它。✊✊✊
在学习之前,我要问各位一个问题,究竟什么是语句呢?
C语言中由一个分号 ; 隔开的就是一个语句,如果在一个程序当中有一行只有一个分号的使用,也是可行的,这样的语句叫做空语句。(为什么要介绍基本的概念呢,因为我觉得这些是我们必须要打牢的知识点。)
一、分支语句(选择结构)
引入:
在现实的生活中,我们时常会遇到各种的选择,比如这样的一句俗语“红灯停,绿灯行,黄灯亮了等一等”。这就是很标准的分支语句,在红灯时我们要停下,绿灯时通行,黄灯时等待。
1.1 if 语句
1.1.1 if 语句的语法结构:
//第一种
if(表达式)
语句;
//第二种
if(表达式)
语句1;
else
语句2;
//第三种:多分支的
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
1.1.2 演示代码及详讲
//第一种
if(表达式)
语句;
//第二种
if(表达式)
语句1;
else
语句2;
//第三种:多分支的
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
1.1.2 演示代码及详讲
第一种:也是最简单一种 if 语句,相信大家都会了,这里就简单的丢个代码出来。
咻~~~
#includeint main() { float score=60.1; if(score>=60) printf("及格n"); printf("老师捞捞,真好!n"); return 0; }
第二种:
这一种就属于比较经典的if 语句啦,展示!
#includeint main() { float score=59.9; if(score>=60){ printf("及格n"); printf("老师捞捞,真好!n"); } else{ printf("不及格n"); printf("老师尽力了n"); } return 0; }
注意:else的大括号和else本身是可以省略掉的,如果表达式的结果为true,则输出 if 块内的代码,如果为false,则执行else块内的代码。C语言中把任何非零或非空的值假定为true,把零或null假定为false。
1.1.3报错原因探究:
第一种:悬空else
#includeint main() { int a=0; int b=2; if(a==1) if(b==2) printf("true"); else printf("false"); return 0; }
解释:
这里的表面上很正确,第一个if与else是一对啊,但是只要你运行一下你就会发现,你输出的没有结果,如下图所示,这是怎么回事呢,这就是else的就近,else会找到最近的if进行结合,而不是本题中的第一个if,所以当a不满足于等于1时,代码运行结束,也就不存在输出结果。
所以,我们要怎么做,才能够输出我们想要的结果呢,我们只需要将第二个if语句用大括号括起来,当作第一个if的代码块就可以了,代码如下面这个一样,各位可以去试试。
#includeint main() { int a=0; int b=2; if(a==1){ if(b==2) printf("true"); } else printf("false"); return 0; }
第二种:= 与 ==的含义搞混产生问题
#includeint main() { int num=1; if(num=10000) { printf("哈哈,你错啦!!!"); } return 0; }
解释:
同志们,仔细看,咱是不是少了啥东西,眼尖的同志可能发现了,少了个等号欸,这里就需要在说一下,一个等号代表赋值,两个等号代表赋值相等,两者具有完全不同的意思。如果按照上述这样书写,if语句会被判断为真,也自然的会输出结果,所以我们写代码时,一定要仔细,仔细,仔仔细细。为了避免出现这样的错误,我们常常把赋值写在前面,变量写在后面,这是一种很好的方法,各位可以尝试一下。下面把正确的代码丢一下。
#includeint main() { int num=1; if(num==10000) { printf("哈哈,你错啦!!!"); } return 0; }
1.2 switch 语句
1.2.1 switch 语句结构
#include
int main()
{
switch(整形表达式)
{
case 整型常量表达式:
语句;
break;
······
//default:
// 语句;
// break;
}
return 0;
}
1.2.2演示代码及详讲
#include
int main ()
{
char grade=0;
scanf("%c",&grade);
switch(grade)
{
case 'A' :
printf("非常好!n" );
break;
case 'B' :
printf("还不错n" );
break;
case 'C' :
printf("你通过了n" );
break;
case 'D' :
printf("最好再尝试一下,争取更好的成绩n" );
break;
default :
printf("成绩不合格,继续努力吧n" );
}
printf("您的成绩是 %cn", grade );
return 0;
}
#includeint main() { switch(整形表达式) { case 整型常量表达式: 语句; break; ······ //default: // 语句; // break; } return 0; }
1.2.2演示代码及详讲
#include
int main ()
{
char grade=0;
scanf("%c",&grade);
switch(grade)
{
case 'A' :
printf("非常好!n" );
break;
case 'B' :
printf("还不错n" );
break;
case 'C' :
printf("你通过了n" );
break;
case 'D' :
printf("最好再尝试一下,争取更好的成绩n" );
break;
default :
printf("成绩不合格,继续努力吧n" );
}
printf("您的成绩是 %cn", grade );
return 0;
}
解释:
上面的代码可以说是很标准的switch语句的使用啦,我们要注意每个case语句后的break的使用,要不然很容易出现问题,导致连续输出多个语句,所以break的使用尤为重要。下面来一个题,也就是鹏哥讲的,这个题本小白感觉确实真的很不错,很容易出错。
#includeint main() { int n = 1; int m = 2; switch (n) { case 1: m++; case 2: n++; case 3: switch (n) {//switch允许嵌套使用 case 1: n++; case 2: m++; n++; break; } case 4: m++; break; default: break; } printf("m = %d, n = %dn", m, n); return 0; }
同志们可以先自己想想结果在去实践操作,下面给出具体的内容讲解。
结语:
本篇文章就讲解到此,感谢读到此处的各位,本文如果有不当的地方,欢迎各位指正,本人一定虚心接受建议,今后我们一起努力,正如开头所说,”合抱之树,生于毫末;九层之台,起于累土;千里之行,始于足下“。✊✊✊



