我们大家都知道,c语言是一门** 结构化 **的程序设计语言,程序的运行都是以某种结构和顺序为骨架去执行的,那么本期就向大家介绍一下c语言的几种结构。
本期主要介绍分支与循环语句
1.什么是语句
2.if语句
3.switch语句
c语言中用一个分号 ;隔开的就是一条语句。例如:
int main()
{
int a=0;//语句由分号隔开,一条语句由分号表示结束
printf ("%d\\n" , a);
; //这也是一种语句
return 0;
}
一个程序基本的组成单位就是语句,值得一提的是 即使一个语句中只有一个分号(如上所示),它也是一条正确的语句,我们后面会有特殊的用法。
如上图,我们在编程中常会遇到上述的结构,它们含有两个或多个分支,如果想准确表达上图所表示的意思,我们就要使用分支语句,其中包含if语句和switch语句。
if语句的语法结构
if(表达式){
语句;
}
if(表达式){
语句1;
}
else
{
语句2;
}
//多分支
if(表达式1){
语句1
}
else if(表达式2){
语句2;
}
else {
语句3;
}
以上三种结构几乎可用于一切的分支情况。
对于这种结构的分支语句来说:
if(表达式){
语句;
}
只需要判断表达式的值是否为真,若表达式为真则执行语句,否则跳出分支语句。
如何判断表达式是否为真?
表达式为零则为假,表达式为非零则为真
对于这种结构的分支语句来说:
if(表达式){
语句1;
}
else
{
语句2;
}
只需要判断表达式的值是否为真,若表达式为真则执行语句1,否则执行语句2。
对于这种结构的分支语句来说:
if(表达式1){
语句1
}
else if(表达式2){
语句2;
}
else {
语句3;
}
首先判断表达式1的值是否为真,如果为真则执行语句1,否则判断表达式2的值是否为真,若表达式2的值为真则执语句2,否则执行语句3。
值得一提的是,if自动匹配之后的一条语句,但若超过两条,则需要用”{}“括起来。如下图所示,程序返回了”4“,验证了我们的说法。
#include
int test(int a)
{
if (a)
return 2;//若if包含下一条语句,程序会打印4,若包含两条以上,程序会打印2
return 4;
}
int main()
{
int a = 1;
int b=test(a);
printf("%d\\n", b);
return 0;
}
switch也是一种分支语句。常常用于多分支的情况,例如,下面这种情景:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日
switch语句的语法结构
switch(整型表达式)
{
case 整型表达式值1:
语句1;
case 整型表达式值2:
语句2;
case 整型表达式值3:
语句3;
case 整型表达式值4:
语句4;
…
default :
语句5;
}
switch语句首先判断整型表达式的值,当整型表达式与某个case后的值i相等时,则执行语句i至最后一条语句,当整型表达式的值与任意一个case后的值均不相等,则执行default语句至最后一条语句。
switch语句只能选择从某条语句开始执行,并不能选择只执行某条case后的语句。也就是说,switch语句在开始执行后,除非遇到break或return,否则语句会逐个执行接下来的case语句直到语句结束。这里可以借用break语句来实现多分支。
那么上面打印星期几的问题就可用以下代码来解决:
# include
int main()
{
int day;
printf("请输入day的值\\n");
scanf_s("%d", &day);
switch (day) {
case 1:printf("星期一\\n");break;
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;
}
}
那么如果我们的需求变成了”输入15,输出工作日,输入67,输出休息日“的话,我们可以通过调整输出语句和break 语句的位置来实现。如下所示
#include
#include
#include
int main()
{
int day;
printf("请输入day的值\\n");
scanf_s("%d", &day);
switch (day) {
case 1:
case 2:
case 3:
case 4:
case 5:printf("工作日\\n");break;
case 6:
case 7:printf("休息日\\n");break;
}
}
全部0条评论
快来发表一下你的评论吧 !