服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 一篇文章带你了解C语言的选择结构

一篇文章带你了解C语言的选择结构

2022-08-29 15:13侯稼澍 C/C++

这篇文章主要为大家介绍了C语言的选择结构,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

一、if-else语句

1.单选择

单选择通过if语句就可以实现,if语句的语法及执行流程如下:

if(表达式)
{
   代码块(表达式返回值为真时执行)
}

一篇文章带你了解C语言的选择结构

当程序运行到if语句时,会由表达式进行判定,诺表达式的返回值为真,则进入代码块执行语句,为假便跳过代码块继续执行。(当代码块语句仅有一句时,可以省略大括号。)

举一个简单的例子

例:判断10是否为3的倍数

 
int main()
{
	int i = 10;
		if (i % 3 == 0) //表达式结果为假 
			printf("是");//代码块内 未执行
	return 0;
}

2.双选择

双选择通过if-else语句实现,if-else语句的语法及执行流程如下:

(else的匹配:else是和它相距的最近的if匹配的)

if(表达式)
{
 语句一(表达式返回值为真时执行)
}
else
{
 语句二(表达式返回值为假时执行)
}

 

一篇文章带你了解C语言的选择结构

当程序运行到if语句时,会由表达式进行判定,表达式的返回值为真,则执行语句1,为假便块执行语句2。

举一个简单的例子

例:判断学生分数及格

#include<stdio.h>
int main()
{
	int i = 0;
	scanf("%d", &i);
	if (i >= 60)
		printf("及格");
	else
		printf("不及格");
	return 0;
}

3.多选择

通过else if语句实现的多选择,else if语句的语法及执行流程如下:

if(表达式1)
{
 语句1 (表达式1返回值为真时执行)
}
else if(表达式2)
{
 语句2 (表达式返回值为真时执行)
}
else if(表达式3)
{ 
  语句3(表达式返回值为真时执行)
}
else 
{
 代码块(以上表达式均为假时执行)
}

 

一篇文章带你了解C语言的选择结构

当程序运行到if语句时,会由表达式进行判定,表达式1的返回值为真,则进入if下的代码块执行语句1,为假便进入表达式2。当然if-else可以实现的分支不止这四种,通过增加else if语句的数量便可以实现更多的选择。

举一个简单的例子

例:年龄分段

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

 

二.switch语句

switch语句也是一种分支语句。 常常用于多分支的情况。else if语句也能实现多分支情况,但在某些情况下使用else if来实现,会使代码过于复杂。

比如:

输入1,输出星期一

输入2,输出星期二

输入3,输出星期三

输入4,输出星期四

输入5,输出星期五

输入6,输出星期六

输入7,输出星期日

如果使用else if

#include<stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	if (1 == day)
		printf("星期一");
	else if (2 == day)
		printf("星期二");
	else if (3 == day)
		printf("星期三");
	else if (4 == day)
		printf("星期四");
	else if (5 == day)
		printf("星期五");
	else if (6 == day)
		printf("星期六");
	else
		printf("星期日");
	return 0;
}

那么这个代码便会太过复杂,而使用switch就会很多

switch语句的语法及执行流程如下:

switch(整型表达式)
{
  //在一个 switch 中可以有任意数量的 case 语句。
  case 整形常量表达式:
  语句;
}

一篇文章带你了解C语言的选择结构

case 是一个入口,按照输入整型表达式的值进入,后按照顺序依次运行。

单使用switch语句是无法实现分支的,需要搭配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;
}

输入值分别为2 4时,输出结果如下:

一篇文章带你了解C语言的选择结构

一篇文章带你了解C语言的选择结构

与想要实现的效果相差甚远,而搭配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;
}

 

一篇文章带你了解C语言的选择结构

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

switch除了搭配break语句使用,往往也会搭配default语句

如果表达的值与所有的case标签的值都不匹配时,所有的语句都会被跳过。程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。

诺并不想忽略不匹配所有标签的表达式的值时,可以在语句列表中增加一条default子句。

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

例如:

#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("输入错误");
  }
  return 0;
}

一篇文章带你了解C语言的选择结构

switch语句可以有一个可选的defaultcase,出现在switch的结尾。default case可用于在上面所有case都不为真时执行一个任务。default case中的break语句不是必需的。

 

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注服务器之家的更多内容!

原文链接:https://blog.csdn.net/HJS020828/article/details/122512531

延伸 · 阅读

精彩推荐
  • C/C++深入全排列算法及其实现方法

    深入全排列算法及其实现方法

    本篇文章是对全排列算法及其实现方法进行了详细的分析介绍,需要的朋友参考下...

    C++教程网3672020-12-06
  • C/C++C语言控制台绘制曲线的实现代码

    C语言控制台绘制曲线的实现代码

    这篇文章主要为大家详细介绍了C语言控制台绘制曲线的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    luoluolzb7512021-07-30
  • C/C++OpenGL中点Bresenham绘制直线算法

    OpenGL中点Bresenham绘制直线算法

    这篇文章主要为大家详细介绍了OpenGL中点Bresenham绘制直线算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Frank(Zhiyang-Dou)8052021-08-17
  • C/C++史上最强C语言分支和循环教程详解

    史上最强C语言分支和循环教程详解

    这篇文章主要介绍了史上最强C语言分支和循环教程详解,本文通过代码演示给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的...

    鹿九丸8142022-02-23
  • C/C++谈谈vector的特殊性之为什么它不是STL容器

    谈谈vector的特殊性之为什么它不是STL容器

    这篇文章主要给大家介绍了关于vector的特殊性之为什么它不是STL容器的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用c++具有一定的参...

    哈乐笑9312021-08-01
  • C/C++C++中构造函数与析构函数的详解及其作用介绍

    C++中构造函数与析构函数的详解及其作用介绍

    这篇文章主要介绍了C++中构造函数与析构函数的详解及其作用介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...

    我是小白呀7042021-12-31
  • C/C++C++用Dijkstra(迪杰斯特拉)算法求最短路径

    C++用Dijkstra(迪杰斯特拉)算法求最短路径

    Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩...

    daisy10222021-04-22
  • C/C++C++11实现简易定时器的示例代码

    C++11实现简易定时器的示例代码

    这篇文章主要介绍了C++11实现简易定时器的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    踏莎行hyx9312021-08-31