我是靠谱客的博主 优秀汉堡,最近开发中收集的这篇文章主要介绍C语言分支语句if,switch语句详细讲解前言C语言是结构化的程序设计语言if语句的语法结构switch语句写在最后,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

前言

C语言是结构化的程序设计语言

顺序结构

选择结构(本篇博客所讲内容)

循环结构

if语句的语法结构

if接单语句的情况

if接多语句的情况

双分支

多分支

悬空else

switch语句

在switch语句中的 break

 default子句

写在最后


前言

C语言分支语句if,switch语句详细讲解篇!!!


C语言是结构化的程序设计语言

顺序结构

一般的语句就是按照的这个结构执行的。

选择结构(本篇博客所讲内容)

C语言用if,switch分支语句构成选择结构

循环结构

C语言用for,while,do..while三个语句构成循环结构。


if语句的语法结构

if接单语句的情况

if(条件表达式)

   语句;

例子:输入n,如果n等于1,打印hello

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n == 1)// = 是赋值符号,条件表达式千万不要写成单个等号!!! 相等是两个等号 ==
	printf("hellon");
    return 0;
}

测试结果: 

说明:

if接单语句情况,满足条件表达式,就执行语句;不满足条件则不执行。

if接多语句的情况

if(条件表达式)

   {

        语句1;

        语句2;

        ....

        语句n;

   }

例子:输入n,如果n等于1,打印hello和world

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n == 1)// = 是赋值符号,条件表达式千万不要写成单个等号!!! 相等是两个等号 ==
	{
		printf("hellon");
		printf("worldn");
	}
    return 0;
}

测试结果: 

说明:

如果if语句后面接一个代码块(一个代码块如下图所示),满足条件表达式,就执行代码块的所有内容;不满足条件则不执行。

代码块实例:(有{}花括号括起来的就是代码块

 注意:单语句可以不加{},多语句必须加上{}。(个人建议不管单语句还是多语句,最好加上{}

条件表达式一定要注意不要写单个等号!!!!!!!!!

双分支

//每个分支单语句的情况

if(条件表达式)

   语句1;

else

   语句2;

//每个分支多语句的情况

if(条件表达式)

   {

        语句1;

        语句2;

        ....

        语句n;

   }

else

  {

        语句1;

        语句2;

        ....

        语句n;

  }

例子:输入n,如果n等于1,打印hello;否则打印bingo。

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n == 1)// = 是赋值符号,条件表达式千万不要写成单个等号!!! 相等是两个等号 ==
	{
		printf("hellon");
	}
	else
	{
		printf("bingon");
	}
	return 0;
}

测试结果:

说明:if else双分支的情况如果满足if的条件表达式,就执行if后面的单语句或者代码块;如果不满足if的条件表达式,则执行else后面的单语句或者代码块

注意:单语句可以不加{},多语句必须加上{}。(个人建议不管单语句还是多语句,最好加上{}

条件表达式一定要注意不要写单个等号!!!!!!!!!

多分支

//每个分支单语句的情况

if(条件表达式1)

   语句1;

else if(条件表达式2)

   语句2;

......

else

   语句n;

//每个分支多语句的情况

if(条件表达式1)

   {

        语句1;

        语句2;

        ....

        语句n;

   }

else if(条件表达式2)

  {

        语句1;

        语句2;

        ....

        语句n;

  }

....

else

  {

        语句1;

        语句2;

        ....

        语句n;

  }

说明:遇到一个分支先判断条件表达式,如果满足,则执行该分支内容,其他分支就不用判断和执行了。如果不满足,则继续往下按顺序进行判断,如果列出的所有if和else if的条件表达式都不满足,则执行else分支的内容。

注意:单语句可以不加{},多语句必须加上{}。(个人建议不管单语句还是多语句,最好加上{}

条件表达式满足时结果为真,则语句执行。

在C语言中如何表示真假?

0表示假,非0表示真。

悬空else

当你写了这个代码:
#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehen");
    else
        printf("hahan");
    return 0; 
}

你以为测试结果是打印haha?其实不然,真正的结果是什么都没执行。

为什么会这样?如果没有{},else的匹配就是else是和它离的最近的if匹配的。

 改正后的代码:

//适当的使用{}可以使代码的逻辑更加清楚。
//代码风格很重要
#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
   {
        if(b == 2)
       {
            printf("hehen");
       }
   }
    else
   {
         printf("hahan");
   }       
    return 0; 
}

这也是为什么我建议大家无论如何都要加上{}!!!

注意:在一个if分支结构中,只能有一个else。

在一个if分支结构中,if可以单独存在。

在一个if分支结构中,可以没有else。


switch语句

switch语句也是一种分支语句。

常常用于多分支的情况。

语法:

switch(整型表达式)

{

   语句项;

}

语句项是什么呢?

case 整型常量表达式:

   语句;

说明:这里case 整型常量表达式:,冒号:的后面,可以接多条语句,不用加上花括号{}

switch语句中的 break

switch 语句中,我们没办法直接实现分支,搭配 break 使用才能实现真正的分支。
比如下面这个代码,没有加上break:
#include <stdio.h>
int 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;
}

假设我们要打印星期三,我们输入3,测试结果却不是我们想象的那样。

 程序会把星期三往下的语句都打印了。

这就是没有break,switch语句的分支不能独立!!

每个case后面加上break的代码:

#include <stdio.h>
int 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;
}

测试结果:

总结:break语句 的实际效果是把语句列表划分为不同的分支部分。

编程好习惯

在最后一个 case 语句的后面加上一条 break语句。

(之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句)。

 default子句

如果表达的值与所有的case标签的值都不匹配怎么办?

其实也没什么,结构就是所有的语句都被跳过而已。

程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。

但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?

你可以在语句列表中增加一条default子句,把下面的标签

default:

写在任何一个 case 标签可以出现的位置。

当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。

所以,每个switch语句中只能出现一条default子句。

但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

比如之前的选星期几的代码,加上default之后

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int 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;
		default:
			printf("输入错误!n");
			break;
	}
	return 0;
}

输入9的测试结果:

 编程好习惯

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


写在最后

有错误的地方希望大家指出,有问题的也可以在评论区讨论。

最后

以上就是优秀汉堡为你收集整理的C语言分支语句if,switch语句详细讲解前言C语言是结构化的程序设计语言if语句的语法结构switch语句写在最后的全部内容,希望文章能够帮你解决C语言分支语句if,switch语句详细讲解前言C语言是结构化的程序设计语言if语句的语法结构switch语句写在最后所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部