一、什么是语句?
c语言语句可分为以下五类
1.表达式语句
2.函数调用语句
3.控制语句
4.复合语句
5.空语句
本站着重介绍控制语句。
控制语句用于控制程序的流程,以实现程序的各种结构方式,c语言是一门结构化的程序设计语言,我们c语言有三种结构,顺序结构,选择结构,循环结构。他们由特定的语句定义符组成,c语言有九种控制语句。
可分为:
1.条件判断语句(分支语句):if语句,switch语句
2.循环执行语句:do while语句,while语句,for语句
3.转向语句:break语句,goto语句,continue语句,return语句
二、分支语句(选择语句)
1. if语句
(1)if语句的三种形式
if(表达式)
语句1; //单分支
if(表达式)
语句1;
else
语句2; //双分支
if(表达式1)
语句1;
else if(表示式2)
语句2;
else
语句3; //多分支
上面这是if语句常见的三种形式。
#include<stdio.h> int main() { int age = 0; scanf("%d", &age);//20 //单分支举例 if (age >= 18) printf("成年\n"); //双分支举例 if (age >= 18) printf("成年\n"); else printf("未成年\n"); //多分支举例 if (age < 16) printf("少年\n"); else if (age >= 16 && age < 30) printf("青年\n"); else if (age >= 30 && age < 40) printf("中年\n"); else if (age >= 40 && age < 56) printf("壮年\n"); else if (age >= 56 && age < 80) printf("老年\n"); else printf("老寿星\n"); return 0; }
如上所示代码中,包含了if的三种形式。
if语句如果需要包含多条代码,则需要加上代码块,
#include<stdio.h> int main() { int age = 20; if (age >= 18) { printf("成年\n"); printf("谈恋爱\n"); } return 0; }
(2)几个经典的错误标准的零分
①下面这段代码未加大括号,if语句无法控制第二个printf,虽然从结果方面来说是对的,但是你们知道我想表达什么意思就可以了。
#include<stdio.h> int main() { int age = 20; if (age >= 18) printf("成年\n"); printf("谈恋爱\n"); return 0; }
②下面这段代码输出的结果什么呢?
#include <stdio.h> int main() { int a = 0; int b = 2; if (a == 1) if (b == 2) printf("hehe\n"); else printf("haha\n"); return 0; }
答案是haha,这就是未加大括号导致的悲剧了。上面这段代码可以加上大括号,就会等价于下面这段代码,这样你就能看得更加清晰了。不会出现错误来了,这也给我们提示了一点,写代码时候一定要注意缩进,要不然自己写的自己都不知道在说啥。
#include <stdio.h> int main() { int a = 0; int b = 2; if (a == 1) { if (b == 2) printf("hehe\n"); } else { printf("haha\n"); } return 0; }
③if括号语句中==写成了=
int main() { int num = 5; if (num=10) { printf("hehe\n"); } return 0; }
(3)一个重要的结论
else是与距离它最近的if匹配的
2、switch
(1)switch语句基本用法
switch语句我们直接看一段代码来进行讲解
int main() { int day = 0; scanf("%d", &day); int n = 2; switch (day) { default: printf("选择错误\n"); break; 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; }
我们switch后面的括号会读取一个整形表达式的值,然后自动跳转到对应的case语句后面,并执行case语句的结果,值得注意的是,要注意break这条语句,这个语句的作用是跳出本层switch语句。因为switch是可以嵌套的,或者跟循环语句嵌套使用。default的意思是,除过case上的所有值之外,其余一切switch所接收的值,都将跳转到default中。
(2)几个经典的错误,标准的零分
①需要添加break时未加break,如果未加break,那么执行完本次case以后,不会直接结束switch,而是继续往下滑,进入下面的case语句中。
②switch语句和case语句中只能是整型表达式,否则报错。比如浮点类型等,但值得注意的是,字符类型和整型类型从某种程度上,也就是ASCII表,来说可以对应起来,也就是之前所说的,表现形式不同而已。
总结
本小节主要讲了if与switch语句中基本的用法,难度不大。但细节很多。
本站未完,欲知后事,请看下节