目录
1、什么是语句
C语言语句分为以下五类
1.表达式语句
2.函数调用语句
3.控住语句
4.复合语句
5.空语句
本次介绍的是控制语句
控制语句:用于控制程序的执行流程,已实现程序的各种结构方式【顺序结构、选择结构、循环结构】,它们由特定的语句定义符组成,c元有九种控制语句。
可以成以下三个类:
1.条件判断语句也叫分支语句:if语句、Switch语句;
2.循环执行语句:do while语句、while语句、for语句;
3.转向语句:break语句、goto语句、continue语句、return语句;
2.分支语句(选择结构)
好好学习考大学,不好好学烤地瓜。这就是选择!
2.1 if语句
那if语句的语法结构是怎么样的呢?
语法结构:
if(表达式) //表达式结果为真执行语句
语句;
if(表达式) //表达式结果为真执行语句1、为假执行语句2
语句1;
else
语句2;
//多分支
if(表达式1) //表达式1结果为真执行语句1
语句1;
else if(表达式2) ////表达式2结果为真执行语句2
语句2;
else
语句n;
默认if() 和else 后面只能控制一条语句,如果跟多条语句要带{ }。
解释:
如果表达式的结果为真,则语句执行。
在C语言中 0 表示假,非 0 表示真。
如果条件成立,要执行多条语句,应使用代码块{ }。一对{ }就是一个代码块。
2.1.2if书写形式的对比
//代码1 ; 条件满足返回x 不满足返回y
if(condition)
{
return x;
}
return y;
//代码2
if(condition)
{
return x;
}else
{
return y;
}
// 代码1和2相同但是代码2更方便阅读
//判断条件技巧
num = 1;
if(5 == num) //比较技巧防止出现写一个等号。
{
printf("haha\n");
}
2.1.3练习
1.判断一个数是否为奇数
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if(a % 2 == 1)
printf("奇数\n");
else
printf("No\n");
return 0;
}
2.输出1-100的奇数
//代码1
#include<stdio.h>
int main()
{int i = 0;
while(i < 100)
{
if(i % 2 == 1)
{
printf("%d ", i);
}
i++;
}
return 0;
}
//代码2
#include<stdio.h>
int main()
{int i = 1;
while(i < 100)
{
printf("%d ", i);
i = i + 2;
}
return 0;
}
2.2switch语句
switch语句也是一种分支语句,常常用于多分支的情况。
比如:
输如1 ,输出星期一
输如2,输出星期二
输如3 ,输出星期三
输如4 ,输出星期四
输如 5,输出星期五
输如 6,输出星期六
输如7 ,输出星期七
那我没写成if...else if ...else if 的形式太复杂,那我们就得有不一样的语法形式。这就是switch语句。
switch语法结构
switch(整型表达式)
{
语句项;
}
什么事语句项?
是一些case语句;
case 整型常量表达式; //必须是整形 常量 字符也可以因为字符本身以整形的形式存放
语句;
2.2.1在switch语句中的break
在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。
比如:
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch(day)
{
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4:
printf("星期四");
break;
case 5:
printf("星期五");
break;
case 6:
printf("星期六");
break;
case 7:
printf("星期七");
break;
}
return 0;
}
改变需求:
1.输入1-5,输出是的是“weekday”
2.输入6-7,输出“weekend”
所以我们的代码就应该这样实现了
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday");
break;
case 6:
case 7:
printf("weekend");
break;
}
return 0;
}
break语句的实现效果是把语句列表会划分为不同的分支部分。
编程好习惯
在最后一个case语句的后面加上一条break语句。
(之所以这么写是可以避免出现以前的最后一个case语句后面忘了添加break语句)。
2.2.2default子句
如果表达式的值与所有的case标签的值都不匹配怎么办?
其实也没什么,结构就是所有的语句都被跳过而已。
程序并不会终止,也不会报错,因为这种情况再C语言中并不认为是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条default子句,把下面的标签
default:
写在任何一个case标签可以出现的位置。
当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任意位置,而且语句流执行一个case标签一样执行得分ault子句。
编程好习惯
在每个switch语句中都放一条default子句是个好习惯,甚至可以在后面再加一个break。
2.2.3练习
#include<stdio.h>
int main()
{
int n = 1;
int m = 2;
switch(n)
{
case 1:m++;
case 2:n++;
case 3:
switch(n)
{
case 1:n++;
case 2:m++;n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d, n = %d",m,n);
return 0;
}
输出结果
m = 5, n = 3
switch语句可以嵌套,break语句只会跳出所在的switch语句

1768

被折叠的 条评论
为什么被折叠?



