C语言第三章 分支结构


#include<stdio.h> int main() { int s; float p,w,d,f; printf(“input number p,w,s\n”); scanf(“%f,%f,%d”,&p,&w,&s); if (s<250) d=0; else if (s<500) d=0.02; else if (s<1000) d=0.05; else if (s<2000) d=0.08; else if (s<3000) d=0.1; else d=0.15; f=p*w*s*(1-d); printf(“f=%f”,f); return 0; }
switch(grade) { case ‟A‟: printf(“90~100\n”); break; case „B‟: printf(“80~89\n”); break; case „C‟: printf(“70~79\n”); break; case „D‟: printf(“60~69\n”); break; case „E‟: printf(“<60\n”); break; default : printf(“error\n”); } 退出switch
图3-4 两路分支的逻辑结构
3.2.1 if…else…语句 如何在C语言中实 y=1; if(表达式)语句块1; else y++; 语句块2; 语句块2 语句块1 } else (1)语句块1 和语句块2可以是一条语句,也可以 { 是多条语句,如果是多条,需要用括号括起来 y=-1; if (x>0)y=1; y--; else y=-1; }
3.2.2
if语句
if(表达式) 语句块1; ——单路分支结构
if (表达式) 语句块1; [else ;]
表达式

语句块1

if语句是if...else语句的一个特例,可以把它理解为是else 后面 跟一条空语句,即条件为“假”时什么也不做
例 设x与y有如下函数关系,当x>0时,y=x-7; 当x=0时,y=2; 当x<0时,y=3*x*x;试 输入x的值,求出y的值。 #include<stdio.h> int main() { float x,y; printf(“input number x:\n”); scanf(“%f”,&x); if(x>0) y=x-7; if(x=0) y=2; if(x<0) y=3*x*x; printf(“%.2f\n”,y); return 0; }
例 有一个函数: -1 (x<0) y= 0 (x=0) 编写一个程序,输入 1 (x>0) x值,输出y值。 void main() if(x>=0) { int x,y; y=0 if(x>0) y=1; scanf(“%d”,&x); if(x>=0) y=-1; else y=0; if(x<0) y=-1; if(x>0) y=1; else y=-1; if(x!=0) else if(x==0) y=0; else y=-1; if(x>0) y=1; else y=1; else y=0; printf(“%d,%d”,x,y);
练习6 main() { int x,y,t; scanf(“%d,%d”,&x,&y); if(x<y) {t=x; x=y; y=t;} if(x<z) {t=x; x=z; z=t; } if(y<z) {t=z; z=y; y=t;} printf(“%d>%d>%d\n”,x,y,z); }
表达式3的值,并把求得的值作为整个表达式的值。
3.3多路分支结构 3.3.1 if…else if语句 if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 …… else if(表达式n-1) 语句n-1 else 语句n

表达式1
真 真
语句1
表达式2

表达式3

语句4

语句2 语句3
例3 运输公司对用户计算运费,路程(s) 越远,每千米运费越低.折扣标准为: s<250km 0 250<=s<500km 2% 500<=s<1000km 5% 1000<=s<2000km 8% 2000<=s<3000km 10% 3000<=s 15%
设每千米每吨货物的基本运费为p,货物重 量为w,距离为s,折扣为d,总运费为f f=p*w*s*(1-d)
第三章 分支程序设计
重点讨论问题: • C程序控制结构有哪几种? • 分支结构的种类? • 两路分支结构,if…else语句实现 • 单路分支结构,if语句实现 • 多路分支结构,if…else if 语句实现, switch语句实现 • If语句的嵌套
C语言控制结构的种类
C语言是一中面向过程的结构化程序设计 语言,它的控制结构可以分为: 顺序结构: 按语句在程序中出现的先后顺 序依次执行的每一条语句.(C程序最主要 的程序结构)
3.2.4 条件表达式
条件表达式是由两个运算符(?和:)把三个操作数连接而 成的式子 它是C中唯一一个三元表达式 条件表达式的一般形式为: 表达式1?表达式2:表达式3 如: x >= 5? y = x * x : y = x + x
表达式的处理过程是: 先计算表达式1,若非0(真),则求表达式2的值;否则求
leap 打印year是闰年 打印year不是闰年
if(leap) printf(“%d是闰年”,year); else printf(“%d不是闰年”,year);
程序如下: #include<stdio.h> void main( ) { int year,leap; scanf(“%d”,&year);
• if(x>0) printf(“%f”,x); else printf(“%f”,-x); else子句不能作为一个语句单独使用,它 必须是if语句的一部分,与if配对使用。
• 在if和else后面可以含一个内嵌操作语 句,也可以有多个操作语句,要用{}将 几个语句括成一个复合语句。 if(a>b) {max=a; printf(“max is %d”,max);} else { max=b; printf(“max is %d”,max); }
程序举例
例1 写一个程序,判断某一年是否为闰年 分析:判别某一年year是否为闰年的算法符 合下面条件之一是: 1.能被4整除,但不能被100整除 2.能被4整除,又能被400整除
程序中以变量leap代表是否为闰年,若闰年, 则leap=1;非闰年,则leap=0
输入year

year%4==0
if(leap) printf(“%d是闰年”,year); If((year%4==0&&year%100!=0)||(year%400==0)) else printf(“%d不是闰年”,year); } leap=1;
else leap=0;
假 假
真 year%100==0 真 假
leap=0;
year%400==0
leap=1;
leap=0;
leap=1; if(year%4==0) if(year%100==0) if(year%400==0) leap=1; else leap=0; else leap=1; else leap=0;
说明: • 在三中形式的if语句中,if后面的表达式 一般为逻辑表达式或关系表达式。
在执行if语句时先会对表达式求解,若表达式值 为0,按假处理,表达式值为非0,则按真处理。
if(3) printf(“happy”);
所以,表达式可以是任意数值类型包括整型、实 型、字符型、指针型数据。
if(’a‟) printf(“%d”,‟A‟);
(2)由于表达式存在互补关系,使用不同的表达式就 有不同的程序格式
图3-7 if…else两种不同的编码格式
if (x>0)y=1; else y=-1;
if (!(x>0))y=-1; else y=1;
例 求出a,b中最大数,将最大数放到max中, 并输出它。 #inlcude<stdio.h> int main() { int a,b,max; printf(“input number a,b\n”); scanf(“%d%d”,&a,&b); if (a>b) max=a; else max=b; printf(“the max is %d\n”,max); return 0; }
语句1
语句2
选择结构(分支结构): 根据变量或表达式满 足的条件决定所要执行的语句.
成立(非0)
条件
不成立0
语句1
语句2
循环结构:依据一定条件的频率反复地执行 一组语句. 0 条件 非0
语句
3.2 两路分支
分支又叫选择,它是一种程序结构
它是根据某一条件的“真”或“假”,有选择地执 行程序中某一部分代码
case 4: case 5: case 6: case 7:d=0.08;break; case 8: case 9: case 10 case 11:d=0.1; break; case 12:d=0.15;break; } f=p*w*s*(1-d); printf(“f=%.2f\n”,f); }
3.2.3 if语句的嵌套
If语句的嵌套——在if语句中包含一个或多 个if语句。 if( ) if ( ) 语句1 内嵌 else 语句2 部分 else if( ) 语句3 内嵌 else 语句4 部分
合集下载

c语言 课件第3章 顺序、分支、循环

c语言 课件第3章 顺序、分支、循环
7
算法的表示方法 ①自然语言表示法
②伪代码表示法 ④N-S流程图表示法 流程图表示法 ⑤流程图表示法
用人们日常使用的语言进行算法的描述 用自然语言、计算机语言及符号进行算法描述 用自然语言、 用矩形框进行算法的描述 用一些图框描述算法
③计算机语言表示法 C、C++、BASIC、VB、VC等语言的程序 、 、 、 等语言的程序
确定性:算法每执行一步,其顺序和内容都必须有确切的规定, ③ 确定性:算法每执行一步,其顺序和内容都必须有确切的规定, 不能含糊不清或二义性 可执行性:算法的所有操作都必须能做到, ④ 可执行性:算法的所有操作都必须能做到,即可操作性 个或多个输入; ⑤ 0个或多个输入;一个或多个输出 个或多个输入
沃 思
程序 = 数据结构 + 算法
数据结构: 数据结构:程序中指定数据的类型和数据的组织形式 算法: 算法: 操作步骤
4
3.1.1 程序算法及其特征 是程序处理问题(数据的计算和处理)的方法和步骤。 (1)算法 是程序处理问题(数据的计算和处理)的方法和步骤。 ) 是解决特定问题而要一步一步执行的有穷操作的描述; 是解决特定问题而要一步一步执行的有穷操作的描述; 是描述解决计算机求解及处理问题的步骤和方法。 是描述解决计算机求解及处理问题的步骤和方法。 算法应包括计算机的数值计算 计算方法等问题 本课程不涉及。) 数值计算、 等问题, (注:算法应包括计算机的数值计算、计算方法等问题,本课程不涉及。) (2)特征 ) 一个完整的程序应具有以下特征: 一个完整的程序应具有以下特征: 分步性: ① 分步性:一个算法是由一步一步的操作完成的 ② 有穷性:一个算法必须能在执行有限步之后结束 有穷性: N! = 1×2×3×. . . ×(N-1)×N × × × × Sum = 1+2+3+. . .+N +. . . 有穷 无穷

C语言第3章_分支结构

C语言第3章_分支结构
关系运算符都是双目运算符。 例如,下面的关系表达式都是合法的: a>b,a+b>c-d,(a=3)<=(b=5),'a'>='b',(a>b)= =(b>c)
3.1 关系运算符及其表达式
关系表达式的值
由于C语言没有逻辑型数据,所以用“1”(非0 值)表示“逻辑真”(true),用“0”(0值) 表示“逻辑假”(false)。
条件运算符
一般格式:
条件运算符是C语言中唯一一个三目运算符。 •运算规则
如果“表达式1”的值为非0(即逻辑真), 则运 算结果等于“表达式2”的值;否则,运算结果等 于“表达式3”的值。
3.3 分支结构和条件运算符
运算符的优先级与结合性
条件运算符的优先级,高于赋值运算符,但低 于关系运算符和算术运算符。其结合性为“自 右至左”(即右结合性)。
与其它种类运算符的优先关系
!→ 算术运算 → 关系运算 → &&→ || → 赋值运 算
3.2 逻辑运算符及其表达式
逻辑表达式
所谓逻辑表达式是指用逻辑运算符将1个或多个 表达式连接起来,符合C语言规则的进行逻辑运 算的式子。
在C语言中,用逻辑表达式表示多个条件的组合。 逻辑表达式的值也是一个逻辑值(非“真”即 “假”)。
3.3 分支结构和条件运算符
switch语句
if语句可以处理多分支,但分支不宜太多,因 此C语言提供了switch语句直接处理多分支选择。
一般形式
3.3 分支结构和条件运算符
执行过程
①当switch后面“表达式”的值,与某个case后 面的“常量表达式”的值相同时,就执行该 case后面的语句(组);当执行到break语句 时,跳出switch语句,转向执行switch语句的 下一条。 ②如果没有任何一个case后面的“常量表达式” 的值,与“表达式”的值匹配,则执行default 后面的语句(组)。然后,再执行switch语句 的下一条。

编程语言基础-C语言 第3章 分支程序设计

编程语言基础-C语言  第3章 分支程序设计

③ 假设A和B是两个表达式,下面对逻辑运 算进行说明。 1) A && B 若A、B均为真, 则“A && B”值为真,否则为 假。 2) A || B 若A、B均为假, 则“A || B值”为假,否则为真。 3) ! A 若A为真, 则 “!A”为假;否则为真。
看下面的例子:
1.
( 3 < 2 ) && ( 7 > 5 ) 值:0 只有 && 右面的子表达式为真 ( 3 < 2 ) || ( 7 > 5 ) 值:1 只要求有一个子表达式为真 !(3<2) 子表达式为假。 值:1
运行结果: 1. 请输入一个正 整数:36↙ Yes! 2. 请输入一个正 整数:15↙ No!
3.2.3 if语句的嵌套

一般形式是: if(表达式1) 语句1; else if(表达式2) 语句2; else if (表达式3) 语句3; else 语句4;
执行过程如图3-4所示。
表达式 1 假 表达式 2 假
}
3.4 分支程序设计应用实例

例3-7: 从键盘输入二个整数,输出其中最大者。 main( ) { int a, b, max; printf("请输入二个整数:"); scanf("%d %d", &a, &b ); if ( a > b ) max = a; else max = b; printf("二者中最大值为:%d", max ); getch( ); 运行结果: } 17 31↙ 二者中最大值为:31
第3章 分支程序设计
3.1 关系表达式和逻辑表达式

C语言-第3章分支结构教学案

C语言-第3章分支结构教学案

第3章 分支结构程序设计(选择结构)1、掌握if 、if-else 、if 的嵌套语句的语法结构及编程语句的语法结构及编程 123.2.1 单分支if 语句的使用学习目标:1、理解选择结构的概念和特点;2、掌握单分支if 语句的语法结构、执行过程和基本用法,学会正确书写if 语句; 4、能正确阅读if 语句程序,会使用if 语句编写、调试并运行程序。

课前准备:预习P30-32(预习后,将学案上知识点在课本上做记号,并完成相应预习题) 课时分配:2课时 活动课堂活动一、发现问题(目标——了解分支结构的意义)实例:从键盘上输入一个数,求这个数的平方根。

算法:发现问题:活动二、解决问题(目标——掌握分支结构) 思考:从键盘输入一个数,若为正数和0则 求其平方根,否则不予处理。

算法:活动三、预习交流(1 ·语句中a>b ·if 每行的结尾,分支中各语句结尾均有 (符号),但 后没有。

·在(2)(3)两语句段中的不同处画上横线,语句(2)中的c=a+b; (属于/不属于)if 分支。

活动五:观察思考(目标——掌握if 的执行流程)1、观察下列程序的执行,口述程序的执行过程,画出程序的流程图: 例1:#include <math.h>#include <stdio.h>main(){float x,y;clrscr();scanf("%f",&x);if (x>=0){y=sqrt(x);printf("%.2f",y);}}流程图:4、说明:例:表达式 -3+‘d’为________表达式,值为______,作条件判断结果为___________ 表达式 a=0 为__________表达式,值为_______,作条件判断结果为__________ 表达式 a=5 为__________表达式,值为________,作条件判断结果为_________ 表达式a>4为____________表达式,若a=5 则结果为_________表达式(a>0)&&(a%2==0)为________表达式,若结果为5 则结果为__________活动六、尝试学习(目标—if语句的初步应用)编程:输入一个学生成绩score,如果成绩大于60,则显示pass,否则不显示程序:流程图:活动七、合作探究、拓展应用(目标—if语句的应用)1、阅读下列程序,写出运行结果,画出程序的流程图:main() Array {int a,b;scanf("%d%d",&a,&b);if (a<b) a=b;printf("%d",a);}执行:·若输入4 5,则输出:________________若输入5 4,则输出:________________·程序的功能是:______________________。

C语言分支结构.ppt

C语言分支结构.ppt

3.1.5 else – if 语句
if(( ch>= 'a' && ch <= 'z' )||( ch>= 'A' && ch<='Z')) letter ++;
else if (ch >= '0' && ch <= '9') digit ++;
else other ++;
实现多路选择
else – if 语句
|| ( ch >= 'A' && ch <= 'Z' )
数字字符
ch >= '0' && ch <= ' 9'
其他字符 除此外
3.1.1 程序解析
#include <stdio.h> int main(void) {
int i, digit, letter, other; char ch;
处理方法: 逐个输入与判断
ASCII字符集:每个可用字符:惟一的 次序值( ASCII 码)见附录2
1 == ‘1’ ?
3.1.3 字符型数据的输入和输出
1. 字符输入函数getchar——输入一个字符
char ch; ch = getchar( );
2. 字符输出函数putchar——输出一个字符
putchar ( 输出参数 );
条件的表示
例3-2 写出满足下列条件的C表达式 (1) ch 是空格或者回车
ch == ' ' || ch == '\n'

c语言第三章ppt课件

c语言第三章ppt课件

§3.3 赋值语句
“=“是一个运算符 注意赋值表达式与赋值语句的区别
§3.4 输入输出在c中的实现
输入输出是以计算机主机为主体而言 输入输出是由函数来实现的
库函数:由厂商预先编写好,并编译成目标文件 使用库函数时,用预编译命令“#include”将有
关的“头文件”包含到用户源文件中。
#include <stdio.h> printf,scanf可不加#include命令
%m.ne和%-m.ne ,n指小数部分的小数位数 printf(“%e%10e%10.2e%.2e%-10.2e”,f,f,f, f,f); 设f=123.456,输出结果为
1.23456e+02 1.23456e+02 1.2e+02 1.2e+02 1.2e+02 ❖g格式符,用来输出实数,根据数值的大小,自动选
printf(“%f %10f %10.2f %.2f %-10.2f \n”,f,f,f,f,f) ;
运} 行结果:
123.456001 123.456001 123.46 123.46 123.46
❖e格式符:以指数形式输出实数 %e ,不指定输出数据所占宽度和数字部分的小数位数。 数值按规范化指数形式输出。 如:printf(“%e”,123.456);输出结果为1.23456e+02
❖格式控制:包含两种信息 格式说明: %格式字符 ,用于指定输出格式
普通字符或转义序列:原样输出
❖输出表列:要输出的数据(可以没有,也可以是表达 式,多个时以“,”分隔
printf(参数1,参数2,参数3……参数n )
格式字符
❖d格式符:输出十进制整数 %d ,按整型数据的实际长度输出 %md,m为指定的输出字段的宽度。如果数据的位数 小于m,则左端补空格,否则按实际位数输出 例:printf(“%4d,%4d”,a,b); 若a=123,b=12345,则输出结果为▂123,12345 %ld,输出长整型数据 例:long a=135790;printf(“%ld”,a); 也可以指定字段宽度,如%8ld

c语言 分支结构 课件【2024版】


break;
default:
other ++;
break;
}
}
printf("blank=%d, digit=%d, other=%d\n", blank, digit, other);
return 0;
}
3.3 分支结构程序设计
分支结构一般分为二分支和多分支两种结构 用条件语句(if 和 switch)实现选择
printf("=%.2f\n", value1*value2);
break;
case '/': printf("=%.2f\n", value1/value2);
如果除数为0?
break;
default:
printf("Unknown operator\n");
break;
}
return 0;
2、在switch中不使用break
default :
语句段n+1;
}
表达式的值=常量表达式 1 的值
表达式的值=常量表达式 2 的值
表 达 式
表达式的值=常量表达式 n 的值
其他
switch (choice) { case 1: price=3.0; case 2: price=2.5; case 3: price=4.0; case 4: price=3.5; default: price=0.0;
if (x < 2)
if (x < 1) y = x + 1;
else y = x + 2;
每条语句的执行条件?
if (x < 2){ if (x < 1) y = x + 1;

C语言课件5


[2] Select popcorn [3] Select chocolate
if (choice == 0) break;
[4] Select cola
switch (choice) {
[0] Exit
case 1: price=3.0; break;
case 2: price=2.5; break;
for( i =lo1o; ip<=o5r;si+w+)it{ch to be exited im[3m] Seedleiacttechlyo.colate
printf("[1] Select crisps \n");
[4] Select cola
printf("[2] Select popcorn \n");
下菜单,用户可以连续查询商品的价格,当查询次数
超过5次时,自动退出查询;不到5次时,用户可以选
择退出。当用户输入编号1~4,显示相应商品的价格;
输入0,退出查询;输入其他编号,显示价格为0。
[1] Select crisps [2] Select popcorn [3] Select chocolate [4] Select cola
☻ exp1 && exp2 先算exp1,若其值为0, STOP
☻ exp1 || exp2 先算exp1,若其值为1,
STOP
3 逻辑运算和逻辑表达式
例:写出满足下列条件的C表达式。(P44 例3-2 ) ① ch 是空格或者换行。 ch == ' ' || ch == '\n' ② 判断ch 是否为小写英文字母 (ch >= 'a') && (ch <= 'z') 或:ch >= 'a' && ch <= 'z' ③ 判断ch 是否为英文字母

2009第三章 C语言语句与结构化程序的三种基本结构


3.2.1 表达式语句
赋值表达式语句的一般格式: <变量名> = <表达式>; 其中 “=”是赋值号, 其意义是将赋值号右边表 达式的值赋到赋值号左边的变量中去。 如: x = 5; 表示将5赋给变量x x = x+20;表示将x的内容+20再赋给x
3.2.2 数据的输出
C语言的输入和输出是通过调用I/O函数来完成 的,常用的有三对:
2. %s格式符和附加的格式说明符“m .n ”一起
使用, 其中“.n”这个附加的格式说明符是使对
输出的字符串截取n位字符。
3.2.2 数据的输出
例如: main() { printf(”%3s,%7.2s,%.4s,%- 5.3s\n”,
“china”,”china”,”china”,”china”),
3.2.3 数据的输入
scanf()函数
用于接受键盘输入的各种类型的多个数据。 scanf (格式控制字符串, 变量地址表列) ; 在scanf()函数中格式控制字符串的含义与printf() 函数中略有不同(参见P64表3.3) 输入的格式说明字符有: 格式控制问题 %d %o %x %c %s %f %e
3.2.3 数据的输入
例如:关于格式说明符的使用的例子.
?
P66 4、scanf()函数在使用时应该 注意的问题+例3.7
输入:12345678901234 输出:1 , 234 , 789012 ,34.000000 输入:12345678901234 输出: , 12 , 345.000000
3.2.3 数据的输入
getchar( )函数
函数功能:从键盘读取用户输入的一个字符, 并 将该字符的ASCII码值作为函数返回值。 注: 用户在输入字符后, 再按回车键, 输入的内 容才能被getchar()函数处理。

C语言分支结构程序设计


3.1 算法与基本程序结构
3.1.1 算法简介
1.算法的定义
算法是一个有限规则的集合,其中的规则描述了解决某个特 定问题的运算序列,也就是为解决一个具体问题而采取的确 定的有限操作步骤 .
广义地说,为解决一个问题而采取的方法和步骤,就称 为“算法”。
对同一个问题,可有不同的解题方法和步骤
例: 求
小结:

一个结构化的算法是由一些基本结构顺序组成 的。在基本结构之间不存在向前或向后的跳转, 流程的转移只存在于一个基本结构范围之内(如 循环中流程的跳转);一 个非结构化的算法可 以用一个等价的结构化算法代替,其功能不变 。 如果一个算法不能分解为若干个基本结构,则 它必然不是一个结构化的算法。
2.传统流程图描述
美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程图符号:
起止框
判断框
处理框
输入/输出框
注释框
流向线
连接点
开始 读入n Y 提示错误信 息
n< 0? N
result=1, i=1 result=result*i i=i+1 i>n? Y 输出result 结束 N
说明:
关系运算符的优先级低于算术运算符 关系运算符的优先级高于赋值运算符
3.关系表达式
• 用关系运算符将两个表达式(可以是算术表达式或 关系表达式,逻辑表达式,赋值表达式,字符表达式) 接起来的式子,称关系表达式
C语言中没有专用 的逻辑值,1代表 例:a>b,a+b>b+c,(a=3)>(b=5),‟a‟<„b‟,(a>b)>(b<c) 真,0代表假
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档