目录
基本概念:
C
语句可分为以下五类:
1.
表达式语句
2.
函数调用语句
3.
控制语句(今天要讲的)
4.
复合语句
5.
空语句
控制语句:
用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,
C
语
言有九种控制语句。分成以下三类:
1.
条件判断语句也叫分支语句:
if语句、switch
语句;
2.
循环执行语句:
do while
语句、
while
语句、
for
语句;
3.
转向语句:
break
语句、
goto
语句、
continue
语句、
return
语句。
在C语言中:0表示假,非0表示真。(这个概念很重要)
if语句
如果表达式的结果为真,则语句执行。
表达式就是if()内的式子。
if语句是有三种结构的:
1:
if(表达式)
语句;
#include<stdio.h>
int main()
{
int score = 90;
if (score >= 80)
{
printf("优秀\n");
}
return 0;
}
这里要注意的是:if()后没有分号,可以这样理解它与下面的语句结合起来才可以算一个完整的语句;另外,下面的语句如果只有一条的话,那么可以不需要{};但是一旦你想让if执行多条语句时,请注意一定加{},否则它将只会执行下面的一条语句。
2:
if(表达式)
语句1;
else
语句2;
#include<stdio.h>
int main()
{
int score = 90;
if (score >= 60)
{
printf("及格\n");
}
else
{
printf("不及格\n");
}
return 0;
}
这里只有score大于等于60时才会打印及格,其他情况都是不及格。
3:
if(表达式1)
语句1;
else if(表达式2)
语句2;
……
else if(表达式n)
语句n
;
else
语句n+1;
#include<stdio.h>
int main()
{
int score = 90;
if (score >= 80)
{
printf("优秀\n");
}
else if(score>=60&&score<80)
//为什么不是60<=score<=80呢?
//编译器从左往右看的时候,60<=90为真,相当于1,而1肯定是小于80的
//所以它既会打印优秀,也会打印良好。
{
printf("良好\n");
}
else
{
printf("不及格\n");
}
return 0;
}
switch语句
switch
语句也是一种分支语句。
常常用于多分支的情况。
比如:
输入
1
,输出星期一
输入
2
,输出星期二
输入
3
,输出星期三
输入
4
,输出星期四
输入
5
,输出星期五
输入
6
,输出星期六
输入
7
,输出星期日
如果写成
if...else if ...else if
的形式太复杂,那我们就得有不一样的语法形式。
这就是
switch
语句。
switch
(
整型表达式
)
{
case
整形常量表达式
:
语句
;
}
这里要注意的是整形常量表达式可以是整型,也可以是字符型,因为字符的存储是以ASCII值(整型)的形式存储,但决不能是浮点型
下面这个代码是输入几,将会打印星期几
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一\n");
break;
//break的作用是结束掉这个switch,
//如果不加break,下面的语句会都被执行
//除非碰到break,否则直到执行完最后一个语句,switch才算结束。
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
}
return 0; }
下面这个代码是输入1-5直接任何一个数字,打印weekday;输入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\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
}
那么有人输入8,我们可以知道,switch语句是不会执行的,但是我们想要在发现这种情况,这就要说到default子句了。它与case子句一样,只不过,它所应对的是像输入8的那种情况。
default:
写在任何一个 case 标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
刚才的代码就可以完善一下了
#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\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
default:
printf("输入错入\n");
break;
}
return 0;
}
第一篇正式博客,希望可以帮到你,有什么不对的地方也希望大家可以提出来。