C语言_ch04_2_if和switch语句剖析


getchar()举例
#include <stdio.h> #include <conio.h> int main() { char c; c = getchar(); putchar(c); return 0; } // 从键盘读入字符直到回车结束 // 显示输入的第一个字符 // getchar()在这里只把输入字符串的第一个字符赋值给c
Q:缺点?
2018/10/26
6

方法2:用一个if语句处理
scanf("%d", &x); if (x < 0) y = -1; else if (0 == x)
y = 0;
else y = 1;
printf("x=%d,y=%d\n", x, y);
2018/10/26
7
else总是与它上面最近的未配对的if配对
编写程序,输入一个x值,要求输出相应的y值。
2018/10/26
5

方法1:先后用3个独立的if语句处理
scanf("%d", &x); if (x < 0) if (0 == x) if (x > 0) y = -1; y = 0; y = 1;
printf("x=%d,y=%d\n", x, y);
2018/10/26
25
作业

复习第四章课件,完成本节课件中的菜单和简单计算 器程序。


源文件名:201600800001_menu.c
201600800001_calculator.c
2018/10/26
26
第四章 选择结构程序设计
Conditional Operator and Expressions
2018/10/26
1
内容

4.1 选择结构和条件判断


4.2 用if语句实现选择结构
4.3 关系运算符和关系表达式 4.4 逻辑运算符和逻辑表达式 4.5 条件运算符和条件表达式 4.6 选择结构的嵌套
case 1:b++; break; }
case 2:a++; b++; break; case 3:a++; b++; }
printf("a=%d,b=%d\n",a,b);
return 0; } 以上程序的运行结果是 A)a=1,b=0 C)a=1,b=1 D)a=2,b=1
2018/10/26
if () if () 语句1 else 语句2 if ()
{
if () 语句1
}
else
Q:else与哪个if配对? 与第二行的if配对,但程 序员的本意是else与第一 行的if配对,怎么办?
2018/10/26
语句2
8
4.7 用switch语句实现多分支选择结构

多路选择 switch (表达式) { case 整型常数1: 语句1;break; case 整型常数2: 语句2;break; ………… default: 语句3; } default分支可以为空,但关键字default不要省略 switch语句的退出:遇到break或执行到右大括号
2018/10/26
3
4.6 嵌套的if语句

嵌套的if语句 在if语句的分支中又包含一个或多个if语句 一般形式: if( ) { if( ) 分支1 else 分支2 } else { if( ) 分支3 else 分支4 }
4
2018/10/26
例4.5 有一函数:
1 ( x 0) y 0 ( x 0) 1 ( x 0)
23
空格
1. 2.
解决方法
两个scanf之间加一个getchar(), 用来接收回车。建议 控制串空格 " %c"

用于匹配键盘缓冲区里的一个或多个空白字符(包 括空格、回车、跳格等字符)
2018/10/26
24
第二个scanf()输入字符
int i; char c; scanf("%d", &i); getchar(); scanf("%c", &c); printf("i: %d, c: %c\n", i, c); int i; char c; scanf("%d", &i); scanf(" %c", &c); printf("i: %d, c: %c\n", i, c);
printf("\n\n");
2018/10/26
22
第二个scanf()输入字符
int i; char c;
scanf("%d", &i); scanf("%c", &c);
printf("i: %d, c: %c\n", i, c);
输入: 5[enter]a[enter] 输出?
2018/10/26
14
switch和else if的比较

else if比switch的条件控制更强大一些

else if可以依照各种逻辑运算的结果进行流程 控制 switch只能进行==判断,并且只能是整数判断


switch比else if更清晰 两者都要尽量避免用得过多、过长,尤其不要嵌套得 太多

它们大大增加程序的分支,使逻辑关系显得混乱, 不易维护,易出错
如果没有 break,下 面的case不 再判断, 但会执行 分支语句
}
2018/10/26
10
int x = 1; switch(x) {
case 1:
printf("x is 1\n"); break;
case 2:
case 3: printf("x is 2 or 3"); break; default: printf("x is not 1, 2, or 3"); }
B)a=2,b=2
12

例4.7 编写程序,用switch语句处理菜单命令。 解题思路:在许多应用程序中,用菜单对流程进 行控制,例如从键盘输入一个’A’或’a’字符,就会 执行A操作,输入一个’B’或’b’字符,就会执行B 操作,等等。
2018/10/26
13
// 4_7.c -- 用switch语句处理菜单命令 char choice; int a = 15, b = 23; printf("两个整数分别为:%d, %d\n\n", a, b); printf("[a] 输出较大值 \n"); printf("[b] 输出较小值 \n"); printf("[q] 退出 \n\n"); printf("Enter choice: "); choice = getchar(); switch (choice) { case 'a': case 'A': (a>b)?printf("\n较大值为:%d\n",a):printf("\n较大值为:%d\n",b); break; case 'b': case 'B': (a<b)?printf("\n较小值为:%d\n",a):printf("\n较小值为:%d\n",b); break; case 'q': case 'Q': break; default: putchar('\a'); } printf(“Thanks\n");
程序的输出? 下列情况的输出? 1. x=2; 2. x=3; 3. x=6; 4. 没有第一个break; 5. 没有第二个break; 6. 两个break都没有。
11
#include <stdio.h>
int main(void)
{ int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++; break;
{
printf("The number is even. \n"); } else { printf("The number is odd. \n"); }
2018/10/26
16
char operator; double value1, value2; 简单计算器的实现 printf("Type in an expression(1+2): "); scanf_s("%lf%c%lf", &value1, &operator,1, &value2); switch (operator){ case '+': printf("=%.2f\n", value1+value2); Type in an expression: 3.1+4.8 break; case '-': =7.9 printf("=%.2f\n", value1-value2); break; case '*': printf("=%.2f\n", value1*value2); break; case '/': 如果除数为0? printf("=%.2f\n", value1/value2); break; default: printf("Unknown operator\n"); brswitch (ch) {
合集下载

【C#】三种结构:顺序、分支(if、switch、条件运算符)、循环

【C#】三种结构:顺序、分支(if、switch、条件运算符)、循环

【C#】三种结构:顺序、分⽀(if、switch、条件运算符)、循环顺序结构:顺序执⾏语句分⽀结构:通过进⾏⼀个判断在两个可选的语句序列之间选择执⾏(分⽀)if语句:根据给定条件进⾏判定,以执⾏某个分⽀程序段,最多只能执⾏⼀个分⽀,可不执⾏分⽀。

①if(条件表达式){ 语句1;}当条件表达式为真,执⾏语句1,否则,跳过语句1,继续执⾏下⾯的语句②if(条件表达式);{语句1;}表达式括号后跟了“;”,导致if语句为空语句,⼤括号内的语句跟if语句没有关系,⽆论条件真假都会执⾏语句1③级联式if(条件表达式1){语句1;}else if(条件表达式2){语句2;}else{语句3;}哪个条件表达式为真则执⾏哪个语句,当if和else if的条件表达式都为假时,执⾏else⾥的语句3条件运算符:通常有两个分⽀,只执⾏⼀个分⽀条件表达式?表达式1 : 表达式2;如果条件表达式为真,整个条件表达式的值为表达式1的值;如果条件表达式为假,整个条件表达式的值为表达式2的值。

int c = a > b ? a : b;switch语句:多分⽀语句,通过判断整型表达式的值,来决定执⾏语句,通常与case配合使⽤switch ——开关,case ——情况,开关决定发⽣的情况switch(表达式){case值1:{语句1;break;} //语句中需定义变量时加{},不定义可不加case值2:{语句2;break;}……case值n:{语句n;break;}default:{语句n+1;break;} //以上case的情况都不满⾜时执⾏}break⽤在switch…case中⽤于结束某个case,然后执⾏switch之外的语句。

case后⾯的标签只能是整型常量或者整型常量表达式,不能⽤变量作为case的标签。

switch语句⽐if-else级联式更容易阅读,更直观。

整个default语句可以舍弃掉多个case(语句块⼀样时)可以运⾏⼀个语句块case中定义变量需要加{}循环结构:在满⾜某个条件的时候反复执⾏⼀个语句序列(循环)特定条件称为循环条件,反复执⾏的程序段称为循环体①while循环(先判断,后执⾏)while(条件表达式){语句;}条件表达式为真,执⾏循环体;⼀旦条件表达式为假,停⽌循环。

再析二级C语言之switch语句的说明

再析二级C语言之switch语句的说明

再析二级C语言之switch语句的说明摘要:switch语句是C语言中的一种流程控制语句,它可以根据表达式的值,跳转到不同的代码块执行。

本文将就switch语句的语法、用法、注意事项等方面进行详细说明,以帮助初学者更好地理解和应用该语句。

关键词:switch语句;流程控制;表达式;代码块;注意事项。

正文:一、switch语句的语法格式switch语句的基本语法格式如下:switch (表达式) {case 常量表达式1:语句序列1;break;case 常量表达式2:语句序列2;break;…case 常量表达式n:语句序列n;break;default:语句序列;}二、switch语句的用法switch语句可以根据表达式的值,跳转到不同的代码块执行。

具体来说,它的运行流程如下:1.计算表达式的值。

2.将表达式的值作为参数,依次与每个case后的常量表达式进行比较,直到找到匹配的常量表达式为止。

3.跳转到对应的代码块执行,如果没有匹配的常量表达式,则执行default后的语句序列。

4.执行完成后,跳出switch语句。

例如,下面的代码演示了switch语句的使用方法:int main(){int a = 2;switch (a) {case 1:printf("a = 1\n");break;case 2:printf("a = 2\n");break;case 3:printf("a = 3\n");break;default:printf("a = other\n");}return 0;}在这个例子中,变量a的值为2,switch语句会依次与case后的常量表达式进行比较,直到找到a=2所匹配的case为止。

然后跳转到相应的代码块执行,并输出字符串“a = 2”。

三、switch语句的注意事项1.每个case后的常量表达式必须是整型,且不能重复。

C语言中的switch语句初探

C语言中的switch语句初探

C语言中的switch语句初探摘要:本文探讨了C语言中实现选择结构的语句switch语句的特点及使用方法。

关键词:选择结构程序设计 switch语句 if语句一、引论顺序结构、选择结构、循环结构共同构成了C语言程序设计的三种基本结构。

除此之外C语言的任何一个程序也不能再分解为其他的基本结构,作为三种基本结构之一的选择结构程序设计就显得尤为重要。

那么要在C语言中实现选择结构程序设计必须具备两个要素:(1)能够在程序中表示条件(2)有实现选择的语句其中的条件在C语言中使用关系表达式或逻辑表达式表示。

而实现选择的语句则有if语句和switch语句两种。

本文重点探讨一下switch语句的用法。

二、switch语句的基本功能switch 是“开关”的意思,作为一种“选择”语句,它的用法非常简单。

switch 是多分支选择语句。

说得通俗点,多分支就是多个 if。

从功能上说,switch 语句和 if 语句完全可以相互取代。

但从编程的角度,它们又各有各的特点,所以至今为止也不能说谁可以完全取代谁。

当嵌套的 if 比较少时(三个以内),用 if 编写程序会比较简洁。

但是当选择的分支比较多时,嵌套的 if 语句层数就会很多,导致程序冗长,可读性下降。

因此C语言提供 switch 语句来处理多分支选择。

所以 if 和 switch 可以说是分工明确的。

在很多大型的项目中,多分支选择的情况经常会遇到,所以switch 语句用得还是比较多的。

三、switch的基本语法格式及执行流程:switch(表达式0){case 常量1:语句序列1case 常量2:语句序列2... ...case 常量n:语句序列ndefault:语句序列n+1}在该格式中执行过程如下:1.首先求得表达式0的值;2.依次与case之后的常量相比较;3.若相等,则执行其后的语句序列;4.否则,执行default之后的语句序列。

说明:1) switch 后面括号内的“表达式”必须是整数类型。

详解C语言中条件判断语句if和switch的用法

详解C语言中条件判断语句if和switch的用法

详解C语⾔中条件判断语句if和switch的⽤法if 语句⽤ if 语句可以构成分⽀结构,它根据给的条件进⾏判定,以决定执⾏哪个分⽀程序段。

C 语⾔的 if 语句有三种基本形式第⼀种形式:if(条件表达式){语句1;}if(条件表达式){语句1;}这种形式运⾏顺序为:当条件表达式为真,执⾏语句1,否则,直接跳过语句1,执⾏后⾯的语句。

例⼦1:BOOL result = YES;if(result){printf("result is true\n");}BOOL result = YES;if(result){printf("result is true\n");}输出结果为:result is true如果把 result 的值改为 NO,那么就什么都不输出了。

例⼦2:int a = 5;int b = 6;if(a >= b){printf("a⼤于b\n");}int a = 5;int b = 6;if(a >= b){printf("a⼤于b\n");}输出结果为:什么都不输出如果改成这样:if(a <= b){printf("a⼩于b\n");}if(a <= b){printf("a⼩于b\n");}那么输出结果为:a⼩于b。

第⼆种形式:if(条件表达式){语句1;}else{语句2;}if(条件表达式){语句1;}else{语句2;}这种结构的执⾏顺序为:当条件表达式为真时,执⾏语句1,否则执⾏语句2。

例⼦1:BOOL result= YES;if(result){printf("result 为真\n");}else{printf("result 为假\n");}BOOL result= YES;if(result){printf("result 为真\n");}else{printf("result 为假\n");}这⾥的两个输出语句绝对不会同时输出。

switch的用法C语言

switch的用法C语言

switch的用法C语言一、Switch语句:C语言中的条件分支控制结构在C语言中,Switch语句是一种常用的条件分支控制结构,可以根据一个表达式的值,在多个选项中进行选择执行不同的代码块。

本文将详细介绍Switch语句在C语言中的用法和特点。

1.1 Switch基本语法结构Switch语句的基本结构如下:```switch(expression){case constant-expression:// 执行语句break;case constant-expression:// 执行语句break;...default:// 执行默认操作}```其中,expression是待判断的表达式,constant-expression是不同情况下的常量表达式。

当程序执行到Switch语句时,会逐一比较每个case后面的constant-expression与expression是否相等,如果相等,则执行相应case后面的代码块,并在最后使用break关键字跳出Switch循环。

如果没有任何一个case与expression相等,则执行default后面的代码块(可选)。

1.2 Switch使用范例为了更好地理解和掌握Switch语句,接下来通过一个简单例子来展示其具体用法。

```c#include <stdio.h>int main(){int num;printf("请输入一个数字(1-5):");scanf("%d", &num);switch(num){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("输入无效,请输入1-5之间的数字。

c中switch用法

c中switch用法

c中switch用法C语言中的`switch`语句是一种在多个选项之间进行选择的控制结构。

它提供了一种简洁而有效的方式来编写选择性的代码块。

本文将详细介绍`switch`语句的用法、语法和一些示例。

1. `switch`语句的基本用法`switch`语句的基本结构如下:cswitch (expression) {case constant1:代码块1break;case constant2:代码块2break;...case constantN:代码块Nbreak;default:默认代码块}其中,`expression`是一个表达式,它的值会与`case`语句中的常量进行比较。

如果匹配成功,则执行对应`case`后面的代码块,并跳出`switch`语句。

如果没有匹配成功,则判断是否有`default`语句,如果有则执行`default`后面的代码块,否则直接跳出`switch`语句。

2. `switch`语句的示例为了更好地理解`switch`语句的用法,我们来看几个示例。

# 2.1 根据星期输出相应的信息c#include <stdio.h>int main() {int day;printf("请输入星期数(1-7): ");scanf("%d", &day);switch (day) {case 1:printf("周一是工作日\n");break;case 2:case 3:case 4:case 5:case 6:printf("周二到周六也是工作日\n");break;case 7:printf("周日是休息日\n");break;default:printf("输入错误\n");}return 0;}在上述代码中,我们根据输入的星期数,使用`switch`语句输出相应的信息。

c语言if结构和switch的判断条件

c语言if结构和switch的判断条件在C语言中,if结构和switch是两种常用的条件判断语句,用于根据不同的条件执行不同的代码。

本文将对这两种判断条件进行详细介绍,并对它们的使用场景和注意事项进行阐述。

一、if结构的判断条件1. 单条件判断if结构最简单的形式是单条件判断,即根据一个条件的真假来决定是否执行某段代码。

语法如下:```if (condition){// 如果条件为真,则执行这里的代码}```其中,condition是一个可以返回真或假的表达式或变量。

如果condition为真,则执行if语句块中的代码;如果为假,则直接跳过if语句块。

2. 双条件判断有时候我们需要根据两个条件的组合决定是否执行某段代码。

if结构可以通过使用逻辑运算符来实现双条件判断,常用的逻辑运算符包括与(&&)、或(||)和非(!)。

示例代码如下:```if (condition1 && condition2){// 如果condition1和condition2都为真,则执行这里的代码}```其中,condition1和condition2可以是任意返回真或假的表达式或变量。

只有当两个条件都为真时,才会执行if语句块中的代码。

3. 多条件判断有时候我们需要根据多个条件的组合情况决定是否执行某段代码。

在C语言中,可以使用if-else if-else结构来实现多条件判断。

示例代码如下:```if (condition1){// 如果condition1为真,则执行这里的代码}else if (condition2){// 如果condition1为假且condition2为真,则执行这里的代码}else{// 如果condition1和condition2都为假,则执行这里的代码}```其中,condition1、condition2等可以是任意返回真或假的表达式或变量。

if-else if-else结构会按照从上到下的顺序依次判断条件,只有第一个满足条件的语句块会被执行。

c语言中switch的用法

C语言中switch的用法一、简介和基本用法在C语言中,switch语句是一种多分支的条件控制语句,用于根据不同的条件执行不同的代码块。

它是一种比较常见且灵活的流程控制语句,能够提高代码的可读性和可维护性。

switch语句的基本语法如下:switch (表达式) {case值1:// 执行代码块1break;case值2:// 执行代码块2break;case值3:// 执行代码块3break;...default:// 执行默认代码块break;}其中,表达式的值会被依次与各个case后面的值进行比较,如果匹配成功,则执行相应的代码块。

如果没有匹配成功的case,则会执行default后面的代码块(可选)。

每个case后面都必须使用break语句来跳出switch语句,否则程序将会继续执行下一个case中的代码块。

以下是一个简单的示例,演示了switch语句的基本用法:#include <stdio.h>int main() {int num = 2;switch (num) {case 1:printf("数字是1\n");break;case 2:printf("数字是2\n");break;case 3:printf("数字是3\n");break;default:printf("数字不在范围内\n");break;}return 0;}输出结果为:数字是2二、多条件判断switch语句不仅可以通过case后面的常量值进行条件判断,还可以使用表达式或变量作为条件。

这使得switch语句可以处理更复杂的逻辑判断。

例如,下面的示例展示了如何使用switch语句来判断某个年份是平年还是闰年:#include <stdio.h>int main() {int year = 2024;switch (year % 4) {case 0:if (year % 100 == 0) {if (year % 400 == 0) {printf("%d年是闰年\n", year);} else {printf("%d年是平年\n", year);}} else {printf("%d年是闰年\n", year);}break;default:printf("%d年是平年\n", year);break;}return 0;}输出结果为:2024年是闰年三、适用范围switch语句适用于需要根据不同条件执行不同代码块的情况,并且条件的取值是有限且离散的。

Ch04_选择结构程序设计



典型示例
求最大值 成绩等级 求方程解

作业/上机

作业(做在书上)

TP62 习题4:一、二、三 TP65 习题4:2,3,5,6

上机


4.1 关系表达式与逻辑表达式

关系运算符及优先级
4.1 关系表达式与逻辑表达式

关系表达式
用关系运算符将两个操作数(常量、变量或表达式)连 接起来,进行关系运算的式子,称为关系表达式。 例如,假设n1=5,n2=8,n3=10,则:

1)关系表达式n1==n2的值为0。 2)关系表达式n1<=n3的值为1。 3)关系表达式n1+n2>n3的值为1。 4)关系表达式n1== n2>n3的值等为0。

举例
if(a>b) max=a; else max=b;
<==>
max = (a > b) ? a : b
4.4 switch表达式

switch格式
switch (<表达式>) if (<表达式> == <数值1>) { <语句或语句组1>; case <数值1>: else if (<表达式> == <数值2>) [<语句或语句组1>;] <语句或语句组2>; <==> case <数值2>: …… [<语句或语句组2>;] else …… <语句或语句组>; [default: <语句或语句组>;] }

例:设a=4,b=5: !a的值为0 a || b的值为1 4 && 0 || 2的值为1

电子信息工程技术《案例 -if语句与switch语句的异同》

案例if语句与switch语句的异同一、案例描述1、考核知识点名称:if语句与switch语句的异同2、练习目标➢了解while循环语句的运行流程➢掌握while语句的用法3、需求分析虽然switch语句可以简化if语句,但两者还是有些区别的。

为了让初学者熟悉if语句与switch 语句的区别,本案例将用if语句实现案例3-4的功能。

4、设计思路(实现原理)1)声明main()函数。

2)定义变量x存放用户输入的数字。

3)用switch语句作判断,如果变量为1-7,则打印相应的字符串。

4)如果变量不在1-7之内,则打印“输入的数字不正确”。

二、案例实现编写程序,代码如下:1#include <stdio.h>2#include <stdlib.h>3void main()4{5int x;6printf("请输入数字1-7:");7scanf("%d", &x);8if (x == 1)9{10printf("今天周一,小王做值日\n");11}12else if (x == 2)13{14printf("今天周二,小李做值日\n");15}16else if (x == 3)17{18printf("今天周三,小张做值日\n");19}20else if (x == 4)21{22printf("今天周四,小赵做值日\n");23}24else if (x == 5)25{26printf("今天周五,小刘做值日\n");27}28else if (x == 6)29{30printf("今天周六,小孙做值日\n");31}32else if (x == 7)33{34printf("今天周日,不做值日\n");35}36else37{38printf("输入的数字不正确\n");39}40getchar();41getchar();42}运行结果如图所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档