首页 > 编程语言 >第6节 选择结构的程序设计

第6节 选择结构的程序设计

时间:2024-07-03 15:56:44浏览次数:13  
标签:语句 case int else 选择 switch 程序设计 表达式 结构

第6节 选择结构的程序设计

1.if语句和switch语句
1、if语句
►if语句的作用是计算给定的表达式,根据结果选择执行相应的语句。语句形式有两种:
    ► ①if形式:
        if (表达式) 语句1;
        如: if ( a>b ) t=a, a=b, b=t;
    ►②if-else形式:
        if (表达式) 语句1; else 语句2;
        如: if ( x>=y ) cout<<x<<endl;
         else cout<<y<<endl;

►(1)if语句中的子语句既可以是简单语句,又可以是复合语句或控制语句,但必须是“一个语句”的语法形式
     1 if (a>b) //此段程序代码编译有错误
     2 	x=a+b; y=a-b;
     3 else
     4 	x=a-b; y=a+b;
     1 if (a>b) { //此段程序代码正确
     2 	x=a+b; y=a-b;
     3 }
     4 else {
     5 	x=a-b; y=a+b;
     6 }

►(2)if语句的表达式一般为关系、逻辑运算表达式,但也可以为其他表达式,但按逻辑值来理解:
    a=5,b=2;
    if ( a ) x=a*10; //等价于a!=0

【例6.1】计算三角形的面积。
     1 #include <iostream>
     2 #include <cmath>
     3 using namespace std;
     4 int main()
     5 {
     6 	double a,b,c;
     7 	cin>>a>>b>>c; //输入三角形三边长
     8 	//判断三边长是否构成三角形
     9 	if (a+b>c && a+c>b && b+c>a) {
    10 		double s,t;
    11 		t=(a+b+c)/2.0;
    12 		s=sqrt(t*(t-a)*(t-b)*(t-c)); //Heron公式计算三角形面积
    13 		cout<<"area="<<s<<endl;
    14 	}
    15 	else cout<<"error"<<endl;
    16 	return 0;
    17 }
/*输出结果
3 4 5
area=6
*/
2、switch语句
►switch语句的作用是计算给定的表达式,根据结果选择从哪个分支入口执行,语句形式为:
	switch ( 表达式 ) {
         case 常量表达式1 : … 语句序列1
         case 常量表达式2 : … 语句序列2
         ┇
         case 常量表达式n : … 语句序列n
         default : … 默认语句序列
    }

在这里插入图片描述

►switch语句的使用说明:
    ►(1)switch语句中case分支的语句序列可以是一个语句,也可以是任意多的语句序列,也可以没有语句;
    ►(2)如果case后没有语句,则一旦执行到这个case分支,什么也不做,继续往下执行。
     1 switch (n) {
     2 	case 7 : cout<<“step5”<<endl;
     3 	case 6 : 
     4 	case 5 : cout<<“step4”<<endl;
     5 	case 4 :
     6 		{
     7 			cout<<“step3”<<“step2”<<endl;
     8 		}
     9 	case 2 : cout<<“step1”<<endl;
    10 	default: cout<<“step0”<<endl;
    11 }
	►(3)switch语法中各个case分支和default分支的出现次序在语法上没有规定,但次序的不同安排会影
		响执行结果。
        1 //①程序A
        2 switch (n) {
        3 case 1 : cout<<"1";
        4 case 2 : cout<<"2";
        5 default: cout<<"0";
        6 }

        1 //②程序B
        2 switch (n) {
        3 default: cout<<"0";
        4 case 1 : cout<<"1";
        5 case 2 : cout<<"2";
        6 }

	►(4)switch语法中default分支是可选的,若没有default分支且没有任何case标号的值相等时,
        switch语句将什么也不做,直接执行后续语句。
	►(5)switch语句的分支表达式可以是C++语言的任意表达式,但其值必须是整数(含字符类型)、
        枚举类型。
    ►(6)switch语法中的case后的表达式必须是常量表达式且互不相同,即为整型、字符型、枚举类型的常
        量值,但不能包含变量。
    ►例如:若c是变量,如 :“case c>=‘a’ && c<=‘z’:”的写法是错的。
    ►(7)在switch语句中任意位置上,只要执行到break语句,就结束switch语句的执行,转到后续语句。
    	break;

	►更常见的switch结构应该如下,它提供了程序多分支选择执行流程。
        switch ( 表达式 ) {
             case 常量表达式1: … 语句序列1; break;
             case 常量表达式2: … 语句序列2; break;
             ┇
             case 常量表达式n: … 语句序列n; break;
             default : … 默认语句序列
        }

在这里插入图片描述

【例6.2】按照考试成绩的等级输出百分制分数段
     1 #include <iostream>
     2 #include <cmath>
     3 using namespace std;
     4 int main()
     5 {
     6 		int g;
     7 		cin>>g; //输入成绩等级
     8 		switch(g)
     9 		{
    10 			case 'A':cout<<"85~100\n"; break;
    11 			case 'B':cout<<"70~84\n"; break;
    12 			case 'C':cout<<"60~69\n"; break;
    13 			case 'D':cout<<"<60\n"; break;
    14 			default: cout<<"error\n";
    15 		}
    16 		return 0;
    17 }
2.选择结构的嵌套
3、if语句的嵌套
►1. 第一种形式,在else分支上嵌套if语句,语法形式为:
    if ( 表达式1 ) 语句1
    else if ( 表达式2 ) 语句2
    else if ( 表达式3 ) 语句3
    ......
    else if ( 表达式n ) 语句n
    else 语句m

在这里插入图片描述

【例6.3】编程输出成绩分类。
     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4 {
     5 		int score;
     6 		cin>>score;
     7 		if (score >= 90 ) cout<<"A"<<endl; //90分以上
     8 		else if (score >= 80 ) cout<<"B"<<endl; //80~89分
     9 		else if (score >= 70 ) cout<<"C"<<endl; //70~79分
    10 		else if (score >= 60 ) cout<<"D"<<endl; //60~69分
    11 		else cout<<"E"<<endl; //60分以下
    12 		return 0;
    13 }

►2. 第二种形式,在if和else分支上嵌套if语句,语法形式为:
    if ( 表达式1 )
         if ( 表达式2 ) 语句1
         else 语句2
    else
         if ( 表达式3 ) 语句3
         else 语句4

在这里插入图片描述

►注意:嵌套的if语句可以实现多路分支。在结构上else语句总和距离自己最近的if相匹配。
	  我们可以通过加“{}”来改变else的层位,从而改变程序的执行流程。

在这里插入图片描述

【例6.4】计算分段函数:
         x-1  (x<-3 )
    y =  9-x2 (-3≤x≤3)
         x+1  (x>3  )
    
     1 #include <iostream>
     2 #include <cmath>
     3 using namespace std;
     4 int main( )
     5 {
     6 		double x, y;
     7 		cin>>x;
     8 		if(x<-3.0) y=x-1.0;
     9 		else
    10 			if(x>= -3.0 && x<=3.0)
    11 				y=sqrt(9.0-x*x);
    12 			else
    13 				y=x+1;
    14 		cout<<"x="<<x<<",y="<<y<<endl;
    15 		return 0;
    16 }
4、switch语句的嵌套
►switch语句是可以嵌套的,如:
     1 int a=15, b=21, m=0;
     2 switch(a%3) {
     3 		case 0: m++;
     4 			switch(b%2) {
     5 				default: m++;
     6 				case 0 : m++; break;
     7 			}
     8 		case 1: m++;
     9 }

【例6.5】输入某天的日期,输出第二天的日期。
     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4 {
     5 	int y,m,d,Days; 
     6 	cin>>y>>m>>d; //输入日期
     7 	switch(m) { //计算每月的天数
     8 		case 2 :
     9 			Days=28;
    10 			if((y%4==0&&y%100!=0)|| (y%400==0)) Days++; //闰年天数加1
    11 			break;
    12 		case 4 : case 6 : 
    13 		case 9 : case 11 : Days=30;break;
    14 			default: Days=31; //其余月份为31天
    15 		}
    16 		d++;
    17 		if (d>Days) d=1,m++; //判断月末
    18 		if (m>12) m=1,y++; //判断年末
    19 		cout<<y<<“-”<<m<<“-”<<d<<endl; //输出第二天的日期
    20 		return 0;
    21 }

标签:语句,case,int,else,选择,switch,程序设计,表达式,结构
From: https://blog.csdn.net/m0_69088645/article/details/140154171

相关文章

  • 【数据结构】堆栈
    目录一、堆栈的基本概念1.1堆栈定义1.2堆栈操作1.3堆栈应用二、顺序栈2.1定义2.2操作2.3C语言实现三、共享栈3.1定义3.2操作3.3C语言实现四、链式栈4.1定义4.2操作4.3C语言实现五、总结        堆栈(Stack)重要的数据结构,它们在计算机科......
  • Vector底层结构和代码解析
    基本介绍定义说明publicclassVector<E>extendsAbstractList<E>implementsList<E>,RandomAccess,Cloneable,java.io.Serializable{Vector底层是一个对象数组,protectedObject[]elementData;Vector是线程同步的(线程安全),Vector类的操作方法带有synchronized......
  • 数据结构第3节: 抽象数据类型
    第3节:基础概念-抽象数据类型(ADT)抽象数据类型(ADT)是一种逻辑上的数学模型,以及定义在此数学模型上的一组操作。ADT通常隐藏了底层实现的细节,只暴露出一个可以被外界访问和操作的接口。在Java中,ADT可以通过接口(interface)来定义,并通过类(class)来实现。2.3.1抽象数据类型的定......
  • python 输入文件夹路径,返回所有的层次结构 excel
    importosimportopenpyxlfromopenpyxl.stylesimportFontdefget_folder_structure(root_folder):folder_structure=[]forroot,dirs,filesinos.walk(root_folder):level=root.replace(root_folder,'').count(os.sep)indent=......
  • 基于扩散的结构预测算法 在生物学中的应用
    基于扩散的结构预测算法在生物学中有广泛的应用,特别是在理解和模拟复杂生物系统的动态行为和相互作用方面。以下是几个关键的应用领域:1.蛋白质结构预测1.1蛋白质折叠基于扩散的算法可以模拟蛋白质从无序状态折叠到有序三维结构的动态过程。这在理解蛋白质功能和设计新药方面......
  • 面试官:JVM调优,主要针对是哪一个区域?JVM内存结构是怎样的?
    作为一个Java程序员,在日常的开发中,不必像C/C++程序员那样,为每一个内存的分配而操心,JVM会替我们进行自动的内存分配和回收,方便我们开发。但是一旦发生内存泄漏或者内存溢出,如果对Java内存结构不清楚,那将会是一件非常麻烦的事情!本文笔者将为大家详解Java内存结构。面试tips聊聊......
  • CSS 选择器
    WebUI自动化中,定位方式的优先级:优先级最高:id优先级其次:name优先级再次:CSSselector优先级再次:Xpath 针对cssselector和xpath的优先级:在项目中我们用的最多的是css或xpath,优先选择css原因:(1)css是配合html来工作,它的实现原理是匹配对象的原......
  • 【408考点之数据结构】B树和B+树
    B树和B+树在大规模数据存储和检索中,B树和B+树是两种广泛使用的数据结构。它们被设计用来高效地管理数据,使得插入、删除和查找操作都能在对数时间内完成。以下是对这两种数据结构的详细介绍。1.B树(B-Tree)定义:B树是一种自平衡的多路查找树,通常用于数据库和文件系统中。B树......
  • 域结构进化的马尔可夫模型
    Markovmodelofdomainarchitectureevolution(域结构进化的马尔可夫模型)是一种用于研究蛋白质域结构进化的概率模型。它基于马尔可夫过程的数学理论,将蛋白质域的进化看作一个状态转移的随机过程。这一模型在生物信息学和进化生物学领域有广泛应用,以下是其主要特点和研究意义:......
  • [JLU] 数据结构与算法上机题解思路分享-第三次上机
    前言首先,请务必自己尽全力尝试实现题目,直接看成品代码,思维就被拘束了,也很容易被查重。这里只是思路解析的博客,代码仓库在JLU_Data_Structures_Record希望你能在这里找到你想要的:)正文A图的创建分数10作者朱允刚单位吉林大学请编写程序创建一个有向图。有向图中包含......