成都网站建设设计

将想法与焦点和您一起共享

【从饮水机到名人堂之c语言】详解分支语句-创新互联

目录

创新互联公司专注于罗定网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供罗定营销型网站建设,罗定网站制作、罗定网页设计、罗定网站官网定制、重庆小程序开发服务,打造罗定网络公司原创品牌,更为您提供罗定网站排名全网营销落地服务。

前言

一、if 语句

1.语法结构

2.悬空else 

二、switch语句 

1.语句结构

2.在switch语句中的 break

3. default子句

总结


前言

在前面章节的学习中,我们只是对C语言有了一个大致的了解,让我们可以看懂一些简单的程序,从今天开始,我们就要深入的学习C语言的内容。

C 语句可分为以下五类: 1. 表达式语句 2. 函数调用语句 3. 控制语句 4. 复合语句 5. 空语句 而控制语句又分为 条件语句,循环语句和转向语句,我们今天要学习的是控制语句中的 条件语句。
一、if 语句 1.语法结构
//半选择结构
if () {
   表达式;
}
//if else 结构
if () {
   表达式1;
}
else {
   表达式2;
}
//多选择结构
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;

if 语句的结构,如果if后面的表达式为真时,执行后边的语句,如果表达式为0即为假,当不为0时即为真,如表达式为-1时为真。 

如果执行单条语句时,我们我们可以不带{ },但是我们要输入多条语句时,必须带上大括号{ }。

#includeint main()
{
    if(表达式)
   {
        语句列表1;
   }
    else
   {
        语句列表2;
   }
    return 0

为了更好地掌握if语句,我们可以过下边的几段代码来分析。

代码1中,我们输入age,通过if判断,当age<18时,即说明判断为真,即输出未成年,当我们age>=18时,判断为假,不输出。

#include//代码1
int main()
{
 int age = 0;
    scanf("%d", &age);
    if(age<18)
   {
        printf("未成年\n");
   }
}

代码2中,输出age,当age<18时输出未成年,else在这里相当于age>=18,即输出成年。

//代码2
#includeint main()
{
 int age = 0;
    scanf("%d", &age);
    if(age<18)
   {
        printf("未成年\n");
   }
    else
   {
        printf("成年\n");
   }
}

代码3中 ,这是多分支的条件语句,通过多组else if语句来控制输出,else if和if一样,后边的判断语句为真时,大括号内的语句成立,否则不成立。

//代码3
#includeint main()
{
 int age = 0;
    scanf("%d", &age);
    if(age<18)
   {
        printf("少年\n");
   }
    else if(age>=18 && age<30)
   {
        printf("青年\n");
   }
    else if(age>=30 && age<50)
   {

        printf("中年\n");
   }
    else if(age>=50 && age<80)
   {
        printf("老年\n");
   }
    else
   {
        printf("老寿星\n");
   }
    
}

2.悬空else 

我们先来看这样一段代码。

#includeint main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");
    return 0;
}

你是否以为这个程序最终输出 haha ,那就大错特错了,我们可以看到这里有两个if表达式,却只有一个else 表达式,这个时候我们就要考虑到if 和 else 的配对问题,我们C语言的语法中,else会和离它最近的一个if配对,故当第一个if不成立后,不会进行第二个if的判断,故程序的结果应该是没有输出。

我们可以调整一下程序的风格和大括号的使用,这样我们就可以更清楚的理解了。

//适当的使用{}可以使代码的逻辑更加清楚。
//代码风格很重要
#includeint main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
   {
        if(b == 2)
       {
            printf("hehe\n");
       }
   }
    else
   {
         printf("haha\n");
   }       
    return 0;
}

二、switch语句 
switch 语句也是一种分支语句。 常常用于多分支的情况。 比如: 输入 1 ,输出星期一 输入 2 ,输出星期二 输入 3 ,输出星期三 输入 4 ,输出星期四 输入 5 ,输出星期五 输入 6 ,输出星期六 输入 7 ,输出星期日 那我没写成 if...else if ...else if 的形式太复杂,那我们就得有不一样的语法形式。 这就是 switch 语句。
1.语句结构
switch ( 整型表达式 ) {

 case 整形常量表达式:

    语句 ; }

2.在switch语句中的 break

这是我们的一段输出周几的程序,我们来看看效果。

#includeint main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	    case 1:
			printf("星期一\n");
		case 2:
			printf("星期二\n");
		case 3:
			printf("星期三\n");
		case 4:
			printf("星期四\n");
		case 5:
			printf("星期五\n");
		case 6:
			printf("星期六\n");
		case 7:
			printf("星期天\n");
	}
	return 0;
}

但是输出结果为什么是星期三,星期四,星期五,星期六,星期天呢,哪里出了问题呢? 

在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。

#includeint main()
{
    int day = 0;
    scanf("%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;
   }
    return 0;
}

这样的话,我们就可以正确的输出了。


3. default子句
如果表达的值与所有的 case 标签的值都不匹配怎么办? 其实也没什么,结构就是所有的语句都被跳过而已。 程序并不会终止,也不会报错,因为这种情况在 C 中并不认为是个错误。 但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢? 你可以在语句列表中增加一条default子句,把下面的标签 default: 写在任何一个 case 标签可以出现的位置。 当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。 所以,每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位置,而且语句流会像执行一个 case 标签一样执行 default 子句。
#includeint main()
{
	int day = 0;
	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;
		default:
			printf("休息日\n");
			break;
	}
	return 0;
}

在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。


总结

通过今天的学习,我们要熟练的掌握几种条件判断语句的用法,并明白背后的道理。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻名称:【从饮水机到名人堂之c语言】详解分支语句-创新互联
网页地址:http://chengdu.cdxwcx.cn/article/dsocoo.html