1.if语句
(1)单分支语句
(2)多重选择语句
(3)悬空else问题
(4)代码块
2、switch语句
一、结构和语句
1、C语言是一名结构化的语言,可分为顺序结构,选择结构,循环结构
2.什么是语句?
C语言中由一个分号( ; )隔开的就是一条语句。
一个;也是语句——空语句
二、分支语句(选择结构)
1.if语句
(1)单分支语句
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int age = 18;
scanf("%d", &age);
if (age < 18)
printf("少年\n");
return 0;
}
(2)多重选择语句
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("少年\n");
//如要求判断age大于等于18小于30怎么写?
//写成else if (18<= age < 30)是错的
//编译器先判断18<=age是否成立,成立为逻辑1,不成立为逻辑0,在进行下一步判断
//应写成age >= 18 && age < 30
else if (age >= 18 && age < 30)
printf("青年\n");
else if (age >= 30 && age < 50)
printf("中年\n");
else if (age >= 50 && age < 80)
printf("老年\n");
else//else去掉也可以
printf("老不死\n");
return 0;
}
也可以将一部分情况归到else之中,如将上述代码写成下列代码,运行结果一致。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("少年\n");
else
{
if (age >= 18 && age < 30)
printf("青年\n");
else if (age >= 30 && age < 50)
printf("中年\n");
else if (age >= 50 && age < 80)
printf("老年\n");
else
printf("老不死\n");
}
return 0;
(3)悬空else问题
else只会和离它最近的未匹配的if进行匹配。
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else//else自动其最近的还没匹配的if对齐,而不是第一个
printf("haha\n");//因此强调代码格式
return 0;
}
//可以看到运行结果为空
(4)代码块
条件完成后执行多条语句时,要使用{},即代码块。
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("未成年\n");
printf("不能谈恋爱\n");
}
return 0;
}
2、switch语句
switch语句也是一种分支语句。 常常用于多分支的情况。
witch(整型表达式) 注意必须要是整型
{
case(整形表达式): case后面必须要跟整型常量表达式
break;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i = 0;
scanf("%d", &i);
switch (i)//括号内必须为整形,判断值并跳转到对应情况,因此i也必须定义为整形
{
case 1: //case后必须是整形表达式
case 2:
printf("100\n");
break;//跳出switch循环,一般不可少,但是同一输出结果时可以不写
case 3:
printf("300\n");
break;//理论上最后一个break可以不写(也可跳出循环),但最好还是写,养成好习惯,后面便于添加case
default: //定义case没有的情况,可有可无(建议写(空语句也行)),与case没有顺序可言
printf("输入错误\n");
break;
}
return 0;
}