文章目录
前言
一、选择结构
1.1 if语句
1.1.1 if语句的三种表达形式
1.1.2 if语句的嵌套
2.switch语句
总结:以上就是今天要讲的内容,本文仅仅简单介绍了if语句及switch语句的使用及一些注意事项,更多的使用技巧还需要大家在做题的时候自行探索哟!
生活中我们总会遇到选择,不同的选择也总会导致不同的结果。在解决问题时,我们也需要根据不同的情况来进行不同的判断。
(1)if(表达式)
{ 语句 ;}
执行逻辑:判断表达式的真与假,为真则执行语句(一条语句可以不用花括号),为假则跳过。
(2)if(表达式)
{ 语句;}
else
{ 语句;}
执行逻辑:判断表达式的真与假,为真则执行if下面的语句,为假则执行else下面的语句。
特别强调:else子句是和if语句是一个整体,不能单独存在。
(3) if(表达式1)
{ 语句1;}
else if(表达式2)
{ 语句2;}
..........................
else(表达式n)
{语句n;}
执行逻辑:与第二类相同,层层向下。
有些时候,我们需要在大前提条件下再次进行其他判断,这就有可能需要用到if语句的判断了。
if ( 条件 )
{
if( 嵌入一个条件 )
{
else {就近原则,对应上面的if}
}
else{ 对应最开始那个if }
}
特别强调:C在处理嵌套的if语句时,会把else子句与它上面 最近的、同括号的、未配对的 if- 相结合。
我们仔细观察一下if语句的第三种类型,可以发现,这种类型是在进行一种多重分支的判断。但是由于书写的不便以及容易出现if-else的匹配错误,我们下面介绍一下专用于多分支情况的switch语句
switch(表达式){
case 整型数值1: 语句 1;
case 整型数值2: 语句 2;
......
case 整型数值n: 语句 n;break;
default: 语句 n+1;
}
执行逻辑:首先计算表达式的值,如果该值和某个常量表达式(case语句的整形数值)的值相同,则 依次执行该语句后的语句, 直到所有语句执行完或 遇到break语句为止。 如果表达式0的值不 同于任何常量表达式的值,则执行语句n。(注意switch后面多条语句一定要加花括号括起来!!!)
特别强调
① 常量表达式中不允许出现变量。(也就是switch后面的那个()里面的值只能是常量)
② 每个case常量表达式仅起标号/站牌的作用。 另外,case与常量表达式之间要有空格。
③ 如果想在执行完语句i 后就结束switch语句, 可加上break语句来实现; 最后一个分支可以不加break语句。(break的意思就是跳出,使用后可跳出switch语句)
④ 语句i既可以为单条语句,也可以是多条语句。即使是多条语句也无需用 { }构成复合语句。
⑤ default子句可省略, 且可出现在任何位置。(default的用法就是如果表达式的值与所有case语句的都不匹配,那么再执行)
⑥ 表达式要求是整型表达式。
⑦ 每个case语句的常量表达式通常是switch表达式的可能取值之一
例1:输入一个数(1-7)并将其转化为星期几(输入1为星期一,以此类推)
#include
int main()
{
int a;
scanf("%d",&a);
switch (a)
{
case 1:printf("Monday\n"); break;
case 2:printf("Tuesday\n"); break;
case 3:printf("Wednesday\n"); break;
case 4:printf("Thursday\n"); break;
case 5:printf("Friday\n"); break;
case 6:printf("Saturday\n"); break;
case 7:printf("Sunday\n"); break;
}
return 0;
}
例2:从键盘上输入一个日期(包括年、月、日), 计算该日期是当年的第多少天
#include
int main()
{int year,month,day,days,n;
scanf("%d%d%d",&year,&month,&day);
days=day;//起始计算天数为本月已过天数
switch(month-1)//从本月的前一个月进行计算累加,直到一月份
{
case 11:days+=30;//注意,没有用break语句是因为匹配后仍然要加到一月份
case 10:days+=31;
case 9:days+=30;
case 8:days+=31;
case 7:days+=31;
case 6:days+=30;
case 5:days+=31;
case 4:days+=30;
case 3:days+=31;
case 2:
if(year%4==0&&year%100!=0||year%400==0)//判断输入年份是否是闰年
days+=29;
else days+=28;
case 1:days+=31;
}
printf("%d",days);
return 0;
}
以上就是今天要讲的内容,本文仅仅简单介绍了if语句及switch语句的使用及一些注意事项,更多的使用技巧还需要大家在做题的时候自行探索哟!