栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【c语言】switch语句的使用和运用(例题讲解)及其与if语句的联系

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【c语言】switch语句的使用和运用(例题讲解)及其与if语句的联系

选择结构当中除了if语句外,还有switch语句可以实现其功能。

那么就要了解switch语句及其使用。

switch语句的一般格式如下:

switch(表达式)
{
    case 常量表达式1: 语句序列1;break;
    case 常量表达式2: 语句序列2;break;
            ......
    case 常量表达式n: 语句序列n;break;
            
    default:语句序列n+1;
}//当表达式的值为常量表达式1的值时,输出语句序列1.
 

我们可以观察到switch-case语句中,表达式的值决定输出的语句序列。所以在写switch语句,我们要规定表达式是什么以及case后面的表达式的常量值是什么,但是switch和case后面的表达式是有说明的。

说明如下:

(1)switch后面的表达式可以是int,char以及枚举类型的任意一种
(2)case后面一定要是常量,且各个值必须要是不同
(3)一般我们会在语句序列的末尾加上break,以结束switch语句
(4)用switch语句实现的语句也可以用if语句或if的嵌套式来实现


 

例一 :标准体重=身高-110,超过标准体重5kg为过胖,低于5kg为过瘦,输入某人的身高和体重,判断标准,过胖,过瘦。请用switch语句实现。

#include
void main()
{
    int height,weight;
    int standard,gap;
    scanf("%d %d",&height,&weight);
    standard=height-110;
    if((standard-weight)==0)gap=0;
    if((standard-weight)>5)gap=1;
    if((standard-weight)<5&&(standard-weight)!=0)gap=2;
    switch(gap)
	{
        case 0:printf("标准体重n");break;
        case 1:printf("过瘦n");break;
        case 2:printf("过胖n");break;
	}
}

我们知道能用switch语句编写的程序也能用if语句编写:

#include
void main()
{
	int height,weight,standard;
	printf("请输入你的身高和体重:n");
	scanf("%d %d",&height,&weight);
	standard=height-110;
	if(standard-weight==0)
		printf("标准体重n");
	else if((standard-weight)>5)
		printf("过瘦n");
	else
		printf("过胖n");
}

对于这道题目来说,switch语句与if语句对比,if语句更为简便和灵活一些,我们可以发现if语句不用对if后面的表达式赋一个常量。



一般而言,if语句会简便一些,但有些程序逻辑性较强,我们就可以考虑用switch语句。
 

例二:输入某年某月某日,判断这一天是这一年的第几天
简单的分析一下:关键是对month的确定,我们可以switch(month),month从1到12,会有day的累加,对day的确定,我们就要考虑year是否为闰年。
代码如下:

#include
void main()
{
 int day,month,year,sum,leap;
 printf("请输入年月日:n");
 scanf("%d,%d,%d",&year,&month,&day);
  switch(month)
  {
	  case 1:sum=0;break;
      case 2:sum=31;break;
	  case 3:sum=59;break;
	  case 4:sum=90;break;
	  case 5:sum=120;break;
	  case 6:sum=151;break;
	  case 7:sum=181;break;
	  case 8:sum=212;break;
	  case 9:sum=243;break;
	  case 10:sum=273;break;
	  case 11:sum=304;break;
	  case 12:sum=334;break;
	  default:printf("date error");break;
  }
  sum=sum+day;
  if(year%400==0||(year%100!=0&&year%4==0))//判断是否为闰年
	  leap=1;
  else
	  leap=0;
  if(leap==1&&month>2)
	  sum++;
  printf("这是这一年的第%d天n",sum);
}

 我们可以明显发现思路非常清晰。

 总结:switch语句可以处理判断分支较多的类型,可读性更好,以及逻辑清晰

 


switch语句与if-else语句结合使用,也会让思路变得清晰,得到很好的效果 

例三:输入星期几的第一个字母来判断是星期几,如果两个单词第一个字母,则判断第二个字母
简单分析:星期一到星期天的首两个字母分别为:mo,tu,we,th,fr,sa,su,对于这种情况,我们就可以switch(letter),当letter为's'时,
就用if-else语句来确定下一个字母为'a'还是'u',同理,letter为't'一样。其它按正常的case来写。 

#include
void main()
{
 char letter;
 printf("请输入一个星期的字母n");
 while((letter=getch())!='y')//直到输入y结束
 {
	 switch(letter)
	 {
	 case 's':printf("请输入第二个字母");
			  
				  if((letter=getch())=='a')
					  printf("saturdayn");
				  else if((letter=getch())=='u')
					  printf("sundayn");
				  else
					  printf("data errorn");
			  break;
	 case 't':printf("请输入第二个字母");
			  
				  if((letter=getch())=='u')
					  printf("tusedayn");
				  else if((letter=getch())=='h')
					  printf("thursdayn");
				  else
					  printf("data errorn");
			  break;
	 case 'm':printf("mondayn");break;
	 case 'w':printf("wednesdayn");break;
	 case 'f':printf("fridayn");break;
	 }
 }

	getchar();	 
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/780006.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号