c语言-选择结构的程序设计

文章目录

前言

一、选择结构

1.1 if语句

     1.1.1 if语句的三种表达形式

        1.1.2  if语句的嵌套

2.switch语句

总结:以上就是今天要讲的内容,本文仅仅简单介绍了if语句及switch语句的使用及一些注意事项,更多的使用技巧还需要大家在做题的时候自行探索哟!


前言

生活中我们总会遇到选择,不同的选择也总会导致不同的结果。在解决问题时,我们也需要根据不同的情况来进行不同的判断。


一、选择结构

1.1 if语句

     1.1.1 if语句的三种表达形式

         

 (1)if(表达式)

          { 语句 ;}

执行逻辑:判断表达式的真与假,为真则执行语句(一条语句可以不用花括号),为假则跳过。         

  (2)if(表达式)

           { 语句;}

       else

            { 语句;}

执行逻辑:判断表达式的真与假,为真则执行if下面的语句,为假则执行else下面的语句。

特别强调:else子句是和if语句是一个整体,不能单独存在。               

  (3)       if(表达式1)

                   { 语句1;}

              else if(表达式2)

                   { 语句2;}

         ..........................

              else(表达式n)

                    {语句n;}

执行逻辑:与第二类相同,层层向下。

        1.1.2  if语句的嵌套

 有些时候,我们需要在大前提条件下再次进行其他判断,这就有可能需要用到if语句的判断了。

if ( 条件 )
{
    if( 嵌入一个条件 )
{
	else	{就近原则,对应上面的if}
}

else{ 对应最开始那个if }
}

特别强调:C在处理嵌套的if语句时,会把else子句与它上面 最近的、同括号的、未配对的 if- 相结合。

2.switch语句

我们仔细观察一下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<stdio.h>
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<stdio.h>
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语句的使用及一些注意事项,更多的使用技巧还需要大家在做题的时候自行探索哟!

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值