欢迎关注🔎点赞收藏⭐️留言
坚持不懈的学习进步
锲而不舍,金石可镂
弃而舍之,朽木不折!
废话不多说,接下来进入C语言的世界
首先我们了解一下C语言当中C语句有哪几类?
答案是一共有4类:
1.表达式语句
·表达式语句是C语句中最简单的一种语句,在表达式的末尾加上分号就形成了一个表达式语句
·常见的赋值语句和函数调用语句也是表达式语句
x = 1000;
y = 30000;
x *= 10;
1;
x + y; //这些语句也是合法的。语句被执行时,表达式求值,但结果并不保存于任何地方
getchar();
x++;
printf("hello \n"); //printf函数的返回值通常并不关心。所谓语句“没有效果”只是表示表达式的值被忽略。
上面代码末尾加上了分号就形成了一个表达式语句。
2.复合语句
·复合语句又叫做语句块,将两条以上的语句用{}括起来,即称作复合语句,也可将其称为块语句
或者是块程序
{a=a+b;
if(a==b)
cout<<"a=0"<<endl;
}
3.空语句
·空语句顾名思义,即只有一个分号的语句,空语句空空如也故什么都不做的语句。
·空语句在循环体中时,表示循环体声明也不做。
;//空语句
for(int a=0;a<10000;a++)
;//循环体为空
4.控制语句
·控制语句就是用来控制的,控制什么呢,控制的就是程序的执行流程,以实现程序的各种结构方式,控制语句由特定的语句定义符组成,在C语言当中有九种控制语句,并把这九种控制语句分为了三类。
这些在C语言当中我们经常见到的语句就被称为控制语句。共九种三类。
接下来我们就一起来探索一下控制语句当中的选择语句if语句
1.单分支语句
//单分支
if(表达式)
语句;//如果为真,执行语句;否则不执行
//C语言规定:0为假,非0为真
·例:如果年龄为15岁(小于18岁)则输出“未成年”——只有一个分支
2.双分支语句
双分支
//两分支
if(表达式)
语句1;//表达式为真,执行语句1
else
语句2;//否则,执行语句2
·例:如果年龄为15岁(小于18岁)则输出“未成年”,else(大于18岁)则输出“已成年”
int main()
{
int age = 20;
if (age < 18)
printf("未成年\n");
else
printf("已成年\n");
return 0;
}
int main()
{
int age = 15;
if (age < 18)
printf("未成年\n");
else
printf("已成年\n");
return 0;
}
3.多分支语句
//多分支
if(表达式1)//表达式1为真,执行语句1
语句1;
else if(表达式2)//表达式1为假,表达式2为真,执行语句2
语句2;
else//其余所有情况,执行语句3
语句3;
例:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("未成年\n");
else if (18 <= age && age < 28)
printf("青年\n");
else if (28 <= age && age < 50);
printf("壮年\n");
return 0;
}
4.代码块
#include <stdio.h>
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
return 0;
}
·如果条件成立,要执行多条语句,应该使用代码块
例:
int main()
{
int age = 0;
scanf(" % d", &age);
if (age < 18) //情况A
{
printf("未成年\n");
printf("不能谈恋爱\n");
}//一对大括号,就是一个代码块
else //情况B
{
if (18 <= age && age < 28)
printf("青年\n");
else if (age >= 50 && age < 50)
printf("壮年\n");
else if (age >= 50 && age < 90)
printf("老年\n");
else//最后一个else也可以省略
printf("寿比南山");
}
return 0;
}
5.悬空else
#include<stdio.h>
int main()
{
int a = 5;
int b = 2;
if (a == 0)
if (b == 0)
a = a + b;
else
a = a - b;
printf("a=%d", a);
return 0;
}
这段代码我们的本意是当a等于0,判断b是否为0,执行下面a=a+b;的语句。如果a不等于0,则执行a=a-b。然而,这只是我们的想法,编译器却没有这么做,原因是C语言中else始终与同一对花括号内最近的未匹配的if结合,这段代码实际上被执行的逻辑是这样的:
#include<stdio.h>
int main()
{
int a = 5;
int b = 2;
if (a == 0)
{
if (b == 0)
a = a + b;
else
a = a - b;
}
printf("a=%d", a);
return 0;
}
也就是说,当a不等于0时这段代码什么也没做,直接输出a=5。如果想按照原来的想法输出,我们应该这样写:
#include<stdio.h>
int main()
{
int a = 5;
int b = 2;
if (a == 0)
{
if (b == 0)
{
a = a + b;
}
}
else
{
a = a - b;
}
printf("a=%d", a);
return 0;
}
现在,else与第一个if结合了,第二个if已经被括号封装起来了。这样,就不会有“悬空else”了。
switch语句
switch在英语中的翻译是开关的意思
在C语言当中switch语句也和if语句一样是一种分支语句
常常用于多分支的情况
话不多说直接给例:
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)//day必须定义为整型
{
case 1+0 ://true 是整型常量就行
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("星期7\n");
break;
}
return 0;
}
看到这里可能会不知所措 :这当中的case是啥呀?break是啥呀?
1.switch
switch的圆括号内测试表达的值应该是一个整数值(包括char类型)
2.case
·case 标签必须是整数类型(包括char类型)的常量 或 整型常量表达式(表达式中只包含整形常量)
3.break
·它使程序控制跳出当前循环或switch语句的剩余部分
·break语句 的实际效果是把语句列表划分为不同的分支部分。
break语句是一个跳出循环的语句这个语句与良好的编程习惯息息相关
这次的分享到这里就结束啦,还有许许多多的if switch语句案例没有介绍完,接下来会出一篇本篇的续篇部分。
不积跬步无以至千里,不积小河无以成江海!
谢谢大家的支持。