第8讲1 条件运算符与条件表达式 switch语句、选择结构程序设计

合集下载

C语言中的条件语句与循环语句详解

C语言中的条件语句与循环语句详解

C语言中的条件语句与循环语句详解C语言是一种广泛应用于计算机编程领域的高级程序设计语言。

在C语言中,条件语句和循环语句是非常重要的概念之一。

它们能够让程序根据不同的条件或需求来进行不同的操作和控制流程。

本文将详细讲解C语言中的条件语句和循环语句。

一、条件语句条件语句用于在程序中根据给定的条件选择性地执行某个操作或一系列操作。

C语言中的条件语句主要有if语句和switch语句。

1. if语句if语句是C语言中最基本的条件语句,其语法格式如下:```cif (条件) {// 如果条件为真,执行这里的语句块}```在if语句中,条件是一个返回值为真或假的表达式。

如果条件为真,那么将执行if语句中花括号内的代码块;如果条件为假,则跳过代码块,继续向下执行。

if语句还可以与else语句一起使用,实现二选一的逻辑判断:```cif (条件) {// 如果条件为真,执行这里的语句块} else {// 如果条件为假,执行这里的语句块}```2. switch语句switch语句用于在多个选项中选择一个进行操作。

其语法格式如下:```cswitch (表达式) {case 值1:// 如果表达式的值等于值1,执行这里的语句块break;case 值2:// 如果表达式的值等于值2,执行这里的语句块break;// 其他case语句default:// 如果表达式的值都不匹配上述任何一个case的值,执行这里的语句块break;}```在switch语句中,表达式的值会与每个case后面的值进行比较,如果匹配,则执行相应的代码块。

每个case语句后面都要使用break语句来结束本次选择,如果没有匹配的case值,将执行default后面的代码块。

二、循环语句循环语句用于重复执行某个操作或一系列操作,直到满足特定条件才退出循环。

C语言中的循环语句主要有for循环、while循环和do-while循环。

1. for循环for循环是C语言中最常用的循环语句,其语法格式如下:```cfor (初始化表达式; 循环条件; 更新表达式) {// 循环体```在for循环中,初始化表达式在循环开始前执行一次,循环条件在每次循环开始前进行判断,如果为真,则执行循环体中的代码块;更新表达式在每次循环结束后执行。

C语言第四章.选择结构程序设计

C语言第四章.选择结构程序设计

case 常量表达式n: 语句n; default : 语句n+1; }
语句的执行过程:
先计算表达式的值,并逐个与其后的常量表达式值相 比较; 当表达式的值与某个常量表达式的值相等时,即执行
其后的语句;
然后不再进行判断,继续执行后面所有case后的语句;
如表达式的值与所有case后的常量表达式均不相同时,
a+b>c && x+y<b 等价于 ((a+b)>c) && ((x+y)<b)
2)逻辑运算的值: 逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”
来表示。
反过来在判断一个量是为“真”还是为“假”时,以“0” 的数值代表“假”,以非“0”的数值代表“真”。
3)逻辑运算的规则:
(1)与运算&&
条件运算符和条件表达式
条件表达式通常用于赋值语句之中。 例如条件语句:
if(a>b) max=a;
else max=b; 可用条件表达式写为 max=(a>b)?a:b;
执行该语句的语义是:如a>b为真,则把a 赋予max, 否则把b 赋予max。
注意以下几点:
条件运算符的运算优先级 低于关系运算符和算术运算符,高于赋值符。 因此 max=(a>b)?a:b可以去掉括号而写为 max=a>b?a:b
注意:
(3) 在if 语句的三种形式中,所有的语句应为单个语句,
如果要想在满足条件时执行一组(多个)语句,则必须
把这一组语句用{ } 括起来组成一个复合语句。 例如:交换两个变量 if (a>b) { t= a; a=b; b=t; }

c语言switch语句的用法详解

c语言switch语句的用法详解

C语言是一种广泛使用的计算机编程语言,它具有丰富的语法和功能,能够实现各种复杂的编程任务。

在C语言中,switch语句是一种非常重要的控制语句,能够根据表达式的值来选择不同的执行路径。

在本文中,我们将对C语言中switch语句的用法进行详细的解释和讨论,希望能够帮助读者更好地理解和掌握这一语句的使用。

1. switch语句的基本语法在C语言中,switch语句的基本语法如下所示:```cswitch (expression) {case constant1:statement1;break;case constant2:statement2;break;...default:statement;}```其中,expression是一个整数表达式,可以是变量、常量或者复杂的表达式。

在switch语句中,expression的值将会与每个case后面的常量进行比较,直到找到匹配的常量为止。

如果找到了匹配的常量,那么与该常量对应的语句将会被执行,然后switch语句将会被终止。

如果没有找到匹配的常量,那么将会执行default后面的语句。

在case后面的语句执行完毕之后,需要使用break语句来终止switch 语句的执行,否则将会继续执行后面的语句。

2. switch语句的使用示例为了更好地理解switch语句的使用方法,我们接下来将给出一个具体的示例。

假设我们需要根据用户输入的数字来显示对应的星期几,那么可以使用switch语句来实现这个功能。

示例代码如下:```c#include <stdio.h>int m本人n() {int day;printf("请输入一个数字(1-7):");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");}return 0;}```在这个示例中,我们首先定义了一个整型变量day,然后通过scanf 函数来接收用户输入的数字。

学习计算机编程中的条件语句与循环结构

学习计算机编程中的条件语句与循环结构

学习计算机编程中的条件语句与循环结构在计算机编程的学习过程中,条件语句和循环结构是非常重要的概念。

它们能够使程序根据不同的条件或重复执行特定的代码块,为开发者提供了强大的逻辑控制能力。

本文将介绍条件语句和循环结构的基本概念以及如何在学习计算机编程时灵活应用它们。

一、条件语句条件语句是编程中最基本的控制结构之一。

它基于一个条件的真假来判断是否执行特定的代码块。

在计算机编程中,常见的条件语句有if语句和switch语句。

1. if语句if语句用于判断一个条件是否为真,如果条件为真,则执行相应的代码块。

其基本语法如下:```if (条件) {// 执行代码块}```在编写if语句时,我们需要注意以下几个关键点:- 条件必须是一个布尔表达式或返回布尔值的表达式;- 可以使用逻辑运算符(如&&和||)结合多个条件;- 可以使用if-else语句来处理条件不满足的情况。

2. switch语句switch语句根据一个表达式的值,选择性地执行与之匹配的代码块。

其基本语法如下:```switch (表达式) {case 值1:// 执行代码块1break;case 值2:// 执行代码块2break;default:// 执行默认代码块break;}```在使用switch语句时,需要特别注意以下几点:- 表达式的值必须为整数、字符或枚举类型;- case后的值必须与表达式的值完全匹配才会执行对应的代码块;- 每个case后需要使用break语句来结束代码块,否则将会继续执行后续的代码;如果没有匹配的case,则执行默认代码块。

二、循环结构循环结构允许我们反复执行一段代码块,直到满足退出条件为止。

在计算机编程中,常见的循环结构有for循环、while循环和do-while 循环。

1. for循环for循环用于指定初始条件、循环条件和每次迭代后的更新操作。

通过这些条件和操作,可以重复执行一个代码块多次。

控制语句-选择结构(switch)

控制语句-选择结构(switch)

控制语句-选择结构(switch)switch选择语句: switch语句⼀般情况下与if语句的效果是等效的,但是switch语句的执⾏速率⽐嵌套的if语句要快,switch语句不分单选/双选/多选结构,它的结构取决于代码的逻辑。

表达式:switch (条件表达式) {case 1: //条件表达式执⾏完毕后,switch判断该值是否为1,如果是1,则执⾏case1 以下的代码代码块1;break;case 2: //case1执⾏完毕后,会继续判断该值是否为2,如果是,同理执⾏case2以下的代码代码块2;break;default: //如果条件表达式执⾏完毕,且该值即不等于1也不等于2,则执⾏该代码块代码块3;break;}(注意:为了防⽌case穿透问题,⼀般在使⽤switch语句时都必须加上break(跳出),否则case下余的代码也会被编译执⾏,就毫⽆意义)(注意:在JDK7之后的版本,switch语句还⽀持String类型,也就是说case后⾯的值不仅可以为数字,也可以为字符/字符串等。

但是如果使⽤float与double会出现丢失精度的问题) case穿透的理解: 当条件表达式计算完成后,程序开始执⾏,如果结果为1,则执⾏case1的代码块1。

当代码块1执⾏完毕后,程序还会继续执⾏case2的代码块2,直⾄执⾏完所有case。

⼀般写程序时只有需要多选择结构时才会经常⽤到switch语句,如果是单/双选择结构,⼀般⽤if语句即可。

⽰例: ①使⽤switch语句实现⼀个简单的掷筛⼦⼩程序:package exercise;/*** @author刘⼩将* switch语句:多选择结构* ⼀个简单的掷⾊⼦⼩程序*/public class TestSwitch {public static void main(String[] args) {double b = Math.random();int e = 1+(int)(b*6);switch (e) { //switch()中默认是int型,或者⾃动转为int的类型(byte,short,char),也可以是枚举。

掌握C语言中的条件语句和循环结构

掌握C语言中的条件语句和循环结构

掌握C语言中的条件语句和循环结构C语言是一种广泛应用于程序设计和系统开发的编程语言,具有快速、高效、灵活等特点。

在C语言中,条件语句和循环结构是非常重要的两个概念,通过掌握它们,我们可以实现程序的逻辑判断和重复执行,从而为我们的编程带来了更大的灵活性和功能性。

本文将详细介绍C语言中的条件语句和循环结构,帮助读者全面理解和掌握。

一、条件语句条件语句是根据特定条件的真假来决定程序的执行路径。

在C语言中,常见的条件语句有if语句、if-else语句和switch语句。

1. if语句:if语句是根据判断条件是否为真来进行分支选择的结构。

它的一般形式是:```cif(条件表达式){// 条件为真时执行的代码块}```if语句的执行过程是首先判断条件表达式是否为真,若为真则执行花括号内的代码块,否则跳过不执行。

举个例子:```c#include <stdio.h>int main(){int num = 10;if(num > 0){printf("num是正数\n");}return 0;}```上述代码中,我们使用if语句判断变量num是否为正数,如果是,则输出"num是正数"。

2. if-else语句:if-else语句是在if语句的基础上增加了一个可选执行路径。

其一般形式如下:```cif(条件表达式){// 条件为真时执行的代码块}else{// 条件为假时执行的代码块}```执行过程和if语句类似,当条件为真时执行if语句后的代码块,当条件为假时执行else语句后的代码块。

举个例子:```c#include <stdio.h>int main(){int num = 10;if(num % 2 == 0){printf("num是偶数\n");}else{printf("num是奇数\n");}return 0;}```上述代码中,我们使用if-else语句判断变量num是否为偶数,根据判断结果输出相应的信息。

09_switch语句以及用switch语句和break语句构成的选择结构

09_switch语句以及用switch语句和break语句构成的选择结构

4.4.2 switch执行过程
switch语句的执行流程是:首先计算switch后 面圆括号中表达式的值,然后用其结果依次与各 个case的常量表达式相比较,若圆括号中表达式 的值与某个case后面的常量表达式的值相等,就 执行此case后面的语句,执行后遇break语句就退 出switch语句;若圆括号中表达式的值与所有 case后面的常量表达式的值都不相同,则执行 default后面的语句n+1,执行后退出switch语句, 退出后程序流程转向开关语句的下一个语句。
44switch语句以及用switch语句和break语句构成的选择结构44switch语句以及用switch语句和break语句构成的选择结构441switch语句通过前面的讨论我们知道if语句处理两个分支处理多个分支时需使用ifelseif结构但如果分支较多则嵌套的if语句层数就越多程序不但冗长而且理解也比较困难
(2)如果在case后面包含多条执行语句时,也不 需要加大括号,进入某个case后,会自动顺序执 行本case后面的所有执行语句。 (3)default总是放在最后,这时,default后不需要 break语句。并且,default部分也不是必须的,如 果没有这一部分,当switch后面圆括号中表达式 的值与所有case后面的常量表达式的值都不相等 时,则不执行任何一个分支直接退出switch语句。 此时,switch语句相当于一个空语句。例如,将 上面例子中switch语句中的default部分去掉,则 当输入的字符不是“A”、“B”、时,此switch语 句中的任何一条语句也不被执行。
说明: (1)switch、case、break、default均为C语言的保留 字。 (2)swich的表达式通常是一个整型或字符型变量,也 允许是枚举型变量,其结果为相应的整数、字符或枚 举常量。 (3)常量表达式又称为开关常数,必须是与表达式对 应一致的整数、字符或枚举常量。 (4)语句1至语句n,可以是简单语句,也可以是复合 语句。 (5)在关键字case和常量表达式之间一定要有空格。 ※重点提示:在switch语句中,default以及break是 可以有也可以没有的,且case语句标号后的语句也可 以省略不写。

C语言程序设计ppt课件-第3章-选择结构

C语言程序设计ppt课件-第3章-选择结构
1.表达式 2. if语句 3. switch语句 4. 选择结构的嵌套 5. 选择结构的应用
本章主要内容
1
选择结构
在解决大量的实际问题时,常常需要根据不同的 情况或条件,制定出不同的解决方案或对策。
选择结构是通过对条件 的判断来选择执行不同 的程序语句。
选择结构
一个程序若具有了判断和选择功 能,就具备了最基本的智能。
的完整的解题步骤。
void main() { int x,y,z,max;
printf("“\n Please input x,y,z: ");
➢将同影一响问到题算可法用乃不至同程算序法的解效决率,sifc(a。xm而n>afy(一一x)"=%x个个;d%算算d法法%d的的",&评质x价,量&y主优,&要z劣); 从时间复杂度和空间复杂度来els考e 虑。
max=y;
例从键盘输入三个不同的、无序if(mm的aaxx整<=zz)数; ,并分别存放 到变量x、y、z中,然后通过pr判int断f("输\n 出ma三x=%个d数\n"中,m的ax)最;
大数。要求将最大数存放在} 变量max中。
25
语法练习(单选题)
1.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中
switch语句的应用
关例键从语键句盘:上输入一个学生的总平均成 绩能用(i大f- e于ls0e且if来小替于换10吗0)? swi,tc按h(分(i数nt段)(评sc定or出e/成10绩.的0)相) 应等级,90以上为A级,80~
{89为caBs级e ,97:0~g7r9a为dCe=级'A,'6;0~br6e9a为k;D级,59以下为E级。 问题分ca析se:s8w:itchg语ra句de中='的B表';达b式re只ak能; 是整型或字符型,所 以可c用as成e 绩7的:高位gr数ad字e=来'C确';定b其re对a应k;的分数段,而每一个 分数c段as又e对6应:swigtrcha中de的='一D'路; 选br择ea。k;可用表达式“((int)(成 绩/1c0)a)s”e 计5算:出成绩的高位数字 ,其中,“(int)”的功能 是将c表as达e式的4:值强制转换成整数。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.4.2 switch语句体中的break语句
main() break语句 {int g ; 的功能是强制 printf("Enter a mark:"); 跳出switch语 scanf("%d",&g); 句体。 printf("g=%d :",g); switch语句 switch(g/10) {case 10: 通常总是和 case 9 : printf("A\n"); break ; break语句联 case 8 : printf("B\n"); break ; 合使用,使得 case 7 : printf("C\n"); break ; switch语句真 case 6 : printf("D\n"); break ; 正起到多分支 default : printf("E\n"); } 结构的作用。
例4.6 用switch语句改写例4.3
main() {int g ; printf("Enter a mark: "); scanf("%d",&g); printf("g=%d: ",g); switch (g/10) {case 10: case 9: printf("A\n"); case 8: printf("B\n"); case 7: printf("C\n"); case 6: printf("D\n"); default: printf("E\n"); } } 程序运行情况如下: Enter a mark:78<CR> g=78: C D E 程序在输出了与78分相 关的等级C之后,紧接着 又输出了与 78 分毫不相 关的等级D、E,这显然 不符合题意。 为了改变这种情况, switch语句常常需要与 break语句配合使用。
例4.5
编写程序,输入能代表一个日期的三个整数,计算该日 是该年的第几天。
main() {int y , m, d, dd=0; case printf("Enter yyyy/mm/dd:"); case scanf("%d/%d/%d", &y, &m, &d); case printf("%d/%d/%d", y, m, d); case switch (m-1) case {case 11: dd=dd+30;/*11月的天数*/ case case 10: dd=dd+31; /*10月的天数*/ case …… case 2: dd=dd+28; /*2月的天数*/ case 1: dd=dd+31; /*1月的天数*/ case 0: dd=dd+d; /*当月已过的天数*/ } if((m>2)&&(y%4==0&&y%100!=0||y%400==0)) dd=dd+1; /*闰年的2月有29天*/ printf(" %d\n",dd); }
闰年优化程序2
main() {int year, leap; printf("Please input the year:"); scanf("%d",&year); leap=(year%4==0&&year%100!=0)||(year%400==0); if (leap) printf("%d is a leap year.\n",year); else printf("%d is not a leap year.\n",year); } leap=year%4==0&&year%100!=0; leap= leap||(year%400==0);
例4.8 求一元二次方程的解
分析:随着方程中的变量 a,b,c的变化,该方程有 以下几种可能性: 1. a=0:不是二次方程。 2. b*b-4*a*c=0, 有两个相等实根。 3. b*b-4*a*c > 0, 有两个不相等的实根。 4. b*b-4*a*c < 0, 有两个共轭复根。
#include "math.h" main() {float a,b,c,disc,x1,x2,realpart,imagpart; scanf("%f,%f,%f",&a,&b,&c); printf("The equation "); if (fabs(a) <= 1E-6) /*判断一个实数a是否为零*/ { printf("is not quadratic\n"); exit(0); } else disc = b*b - 4*a*c; if (fabs(disc) <= 1E-6) /* disc ==0 */ printf("has two equal root: %8.4f",-b/(2*a)); -6) { x1 = (-b + sqrt(disc))/(2*a); x2 = (-b - sqrt(disc))/(2*a); printf("has two root:%8.4,%8.4f\n",x1,x2); } else { realpart = -b/(2*a); imagpart = sqrt(-disc)/(2*a); printf("has complex roots:\n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); printf("%8.4f-%8.4fi\n",realpart,imagpart); } }
例4.7 写一程序,从键盘上输入一个年号year (4位十进制整数),判断该年是否闰年。
分析:判断某年是否为闰年的条件是: 1)年号能被4整除但不能被100整除; 2)年号能被400整除。
main() {int year, leap; /*leap=0不是; leap=1是*/ printf("Please input the year:"); scanf("%d",&year); if (year % 4==0) if (year % 100 != 0) leap=1; else if (year%400==0) leap=1; else leap=0; else leap=0; if (leap==1) printf("%d is a leap year.\n", year); else printf("%d is not a leap year.\n", year); }
例4.7 闰年程序
闰年优化程序1
main() {int year, leap; printf("Please input the year:"); scanf("%d",&year); leap=0; if (year%4==0 && year%100!=0) leap=1; leap= leap|| (year%400==0); if (year%400==0) leap=1; if (leap) printf("%d is a leap year.\n", year); else printf("%d is not a leap year.\n", year); }
4.4 switch语句
使用switch语句实现多分支选择结构, 可以使程序的结构显得更加清晰。 执行过程: 1. switch语句的一般形式与执行过程
switch语句形式如下: switch (表达式) {case 常量表达式1: [语句1] case 常量表达式2: [语句2] : case 常量表达式n: [语句n] [default:语句n+1] } 方括号中的内容可以省略 先计算表达式的值, 表达式只能是 然后寻找与该值吻合 整型、字符型 case和常量表 的case标号,并执行 或枚举型 达式之间一定 该标号开始的所有语 要有空格 句,直到switch语句 多条语句可 以不必用{ } 体结束。如果没有与 括起来 该值相等的标号,则 default标号 从default标号后的语 也可以放在 句开始执行,直到 其它位置 switch语句体结束。
第8讲
条件运算符与条件表达式 switch语句、选择结构程序设计
4.3 条件运算符和条件表达式
条件运算符: ? : 条件表达式的一般形式为:表达式1?表达式2:表达式3 条件表达式的求解过程:先求“表达式1”的值,当“表达式1” 的值为非零时,以“表达式2”的值作为整个条件表达式的值; 当“表达式1”的值为零时,以“表达式3”的值作为整个条件 表达式的值。
9: dd=dd+30; 8: dd=dd+31; 7: dd=dd+31; 6: dd=dd+30; 5: dd=dd+31; 4: dd=dd+30; 3:程序运行情况如 dd=dd+31;
Enter yyyy/mm 2003/2/15 46 Enter yyyy/mm 2003/12/31 36
}
switch语句的几种变化形式
main() main() main() main() {int gg;;; {int g g ; {int {float printf("Enter a mark:"); printf("Enter aamark:"); printf("Enter a mark:"); printf("Enter scanf("%d",&g); mark:"); scanf("%d",&g); scanf("%d",&g); scanf("%f",&g); printf("g=%d :",g); printf("g=%d :",g); printf("g=%d :",g); printf("g=%5.1f :",g); switch(g/10) switch(g/10) switch(g/10) switch(g/10) switch((int)(g/10)) {case 10: break ; {case 10: {case10: {case case 910:printf("A\n"); break ;; case : 9: : printf("A\n"); break ; case9 9 :printf("A\n"); break ; case printf("A\n"); break default : : printf("B\n"); break ; ; ; printf("E\n"); break case 88: : printf("B\n"); break ; case8 case printf("B\n"); break case 8 :printf("C\n"); break ; ;; printf("B\n"); break case : : printf("C\n"); break case7 77 : printf("C\n"); break ; case case 7 :printf("D\n"); break ; ;; case : 6: :printf("C\n"); break ; case6 6 printf("D\n"); break case printf("D\n"); case 6 :: printf("E\n"); break ; printf("D\n"); break default :: printf("E\n"); default printf("E\n"); } }}default }} } }}
相关文档
最新文档