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

Slides:



Advertisements
Similar presentations
CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
Advertisements

《C语言程序设计》复习
软件工程 周志钊
程序设计基础知识.
1.1.2 四 种 命 题.
第 5 章 流程控制 (一): 條件分支.
第4章 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的 如果你在家,我去拜访你 如果考试不及格,要补考
C语言程序设计 第十二章 位运算.
第一章 程序设计入门.
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
高级语言程序设计 主讲人:陈玉华.
第一章 C语言概述.
由C程序结构所知,一个完整的C语言程序是由一个且只能有一个main()函数(又称主函数)和若干个其他函数组合而成的。而前面各章仅学习main()函数的编程,本章将介绍其他函数的编程,包括其他函数的定义、调用、参数传递及变量的作用域等。
第2章 分支结构 P if语句 2.2 switch语句 2.3 用条件运算符转换大小写字母 2.4 程序举例
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
Class 2 流程控制-選擇敘述與迴圈.
第3章 顺序结构程序设计 本章要点: 格式化输出函数──printf() 格式输入函数——scanf() 字符输出函数——putchar()
適用於多選一 可減少if 與 else配對混淆的錯誤.
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
Chap 10 函数与程序结构 10.1 函数的组织 10.2 递归函数 10.3 宏定义 10.4 编译预处理.
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
C程序设计.
If … else 選擇結構 P27.
第五章 选择结构程序设计 一、关系运算符和表达式 1、关系运算符 在程序中经常需要比较两个量的大小关系, 以决定程序下一步
Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度
Introduction to the C Programming Language
第七章 函数 目录 有参的加法函数的开发 函数定义的一般形式 函数参数和函数的值 函数的调用
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
Introduction to the C Programming Language
Chap 3 分支结构 3.1 简单的猜数游戏 3.2 四则运算 3.3 查询自动售货机中商品的价格.
C语言 程序设计基础与试验 刘新国、2012年秋.
第三章 顺序结构程序设计 主讲教师 贾月乐 电话:
第二章 词法分析 (Lexical Analysis)
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
第七章 函数及变量存贮类型 7.1 函数基础与C程序结构 7.2 函数的定义和声明 7.3 函数的调用 7.4 函数的嵌套与递归
第4章 顺序程序设计.
目录 9.1 结构体类型 9.2 共用体类型 9.3 枚举类型 9.4 类型声明符typedef 1.
C语言概述 第一章.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
第一章 程序设计和C语言 主讲人:高晓娟 计算机学院.
Main() { Dfas Asdfasf fasdfa } #include <stdio.h> void main( ) {
函数 概述 模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块, 特点: 开发方法: 自上向下,逐步分解,分而治之
函式庫補充資料.
第8章 位运算 本章导读 本章主要知识点 《 C语言程序设计》 (Visual C++ 6.0环境)
组合逻辑电路 ——中规模组合逻辑集成电路.
目录 4.1选择结构程序设计的概述 4.2关系运算符和表达式 4.3逻辑运算符和表达式 4.4用if语句实现选择结构程序设计
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
指標
第十四章 若干深入问题和C独有的特性 作业: 函数指针 函数作参数 函数副作用 运算 语句 位段 存储类别 编译预处理
课前注意 课前注意 大家好!欢迎加入0118班! 请注意以下几点: 1.服务:卡顿、听不清声音、看不见ppt—管家( ) 2.课堂秩序:公共课堂,勿谈与课堂无关或消极的话题。 3.答疑:上课听讲,课后答疑,微信留言。 4.联系方式:提示老师手机/微信: QQ:
C程序设计.
C++程式設計入門 變數與運算子 作者:黃建庭.
第3章 数据类型、运算符与表达式.
第2章 基本数据及其运算 本章学习的目标: 1、掌握基本数据的各种表示,基本数据常数的书写方法;
习 题 课(作业).
第三章 基本的輸出與輸入函數 (Basic Output & Input Function)
9.1.2不等式的性质 周村实验中学 许伟伟.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
第二章 数据类型、运算符和表达式 §2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式 目 录 上一章
第18讲 从C到C++ 计算机与通信工程学院.
多重條件選擇敘述
第一次上機考參考答案 僅供參考,同學可自行再想更好的方法..
Chap 10 函数与程序结构 10.1 圆形体积计算器 10.2 汉诺塔问题 10.3 长度单位转换 10.4 大程序构成.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 一元一次不等式和一元一次不等式组 回顾与复习(一).
大綱: 比例線段定義 平行線截比例線段性質 顧震宇 台灣數位學習科技股份有限公司
C语言基础学习 从外行到入门.
Presentation transcript:

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

5.1 if - else 分支语句 5.2 if - else if 分支语句 5.3 switch 开关分支语句 5.4 习题

5.1 if - else 分支语句 分支结构是程序的基本结构。所谓分支结构,就是根据不同的条件,选择不同的程序块(分程序)进行处理。 在 C 语言程序中,条件分支结构是通过 if 语句和 switch 语句实现的。if 语句有 if、if-else 和 if-else if 三种形式。

5.1 if - else 分支语句 格式: if(表达式e) { 语句S1; 真 假 } else 语句S2; S1、S2是一个语句或分程序(程序块),也可以是空语句。 功能:e 的结果为真(非0), 则执行 S1。 e 的结果为假 (0) , 则执行 S2。

5.1 if - else 分支语句 例:输入任意两个数,求其最小值。 Please input a and b: 100,99〈CR〉 #include “stdio.h” main( ) { int a,b; printf(“\n Please input a and b:”); scanf(“%d,%d”,&a,&b); if ( a < b ) printf(“min=%d”,a); else printf(“min=%d”,b); } Please input a and b: 100,99〈CR〉 min=99 运行程序:

5.1 if - else 分支语句 格式: 功能: e 的结果为真(非0), 则执行 S。 if ( 表达式e ) { S; } 假 真

5.1 if - else 分支语句 Please input a:99 〈CR〉 OK! #include “stdio.h” main( ) { int a; printf(“\n Please input a:”); scanf(“%d”,&a); if ( a %3 = = 0 ) printf(“OK!”); } 运行程序 Please input a:99 〈CR〉 OK!

5.1 if - else 分支语句 √ × 找出错误的if语句: (1) if (x>y); (2) if (x>y) a=10 else a=100; (3) if (x>=y) a=10; printf(“%d”,a); else a=100; (4) if (5) a=10; √ ×

5.1 if - else 分支语句 条件分支的嵌套 条件分支嵌套就是在一个分支中包含(嵌套)另一个分支。 分支嵌套应注意: 程序的走向,即程序的入口和出口、执行部分和非执行(跳出)部分。

5.1 if - else 分支语句 Please input x, y, z: 100 5 29〈CR〉 min=5 main( ) { int x,y,z,min; printf(“Please input x, y, z :”); scanf(“%d %d %d”,&x,&y,&z); if ( x <y ) { if ( x<z ) min=x; else min=z; } else { if ( y<z ) min=y; else min=z; printf(“\n min=%d”,min); 运行程序 Please input x, y, z: 100 5 29〈CR〉 min=5

5.1 if - else 分支语句 答案: B 例:假定a=b=c=0, x=35,下列程序段执行后, x的值是: if (!a) if (b); if (c) x=3; else x=4; A) 34 B) 4 C)35 D)3 答案: B

5.2 if-else if 分支语句 if ( e1 ) S1; else if ( e2 ) S2; else if ( e3 ) 其一般形式为: 假 真 …... e1 e2 e3 en S1 Sn+1 S2 S3 Sn if ( e1 ) S1; else if ( e2 ) S2; else if ( e3 ) S3; .... else if ( en ) Sn; else Sn+1;

5.2 if-else if 分支语句 #include “stdio.h” 例5-3:计算并输出y的值 #include “math.h” 3x-1 x<0 6x2+9x-5 0<=x<10 y= 10<=x<25 x x>=25  #include “stdio.h” #include “math.h” void main( ) { float x,y; scanf(“%f”,&x); if (x<0) y=3*x-1; else if (x<10) y=6*x*x+9*x-5; else if(x<25) y=sqrt(9*x+10); else y=x; printf(“%f,%f”,x,y); }

例 5-4 :学生成绩分A、B、C、D、E 五等。任给一个成绩,判断它属于哪一等,用 if-else if 分支语句编程。 main( ) { float score; printf(“\n Enter a score(0-100):”); scanf(“%f”,&score); if (score>=90) printf(“A \n”); else if (score>=80) printf(“B \n”); else if (score>=70) printf(“C \n”); else if (score>=60) printf(“D \n”); else printf(“E \n”); }

5.3 switch 开关分支 在计算机程序设计中,实际问题常常需要用到多分支的选择。 if 语句只能有两个分支可供选择,不能满足多分支的需要。 if-else if 嵌套形式可以满足要求。但也可选用switch语句,switch是多分支选择语句。

5.3 switch 开关分支 开关分支执行时根据条件的取值来选择程序中的一个分支。switch 分支语句形式如下: e S n+1 S 1 S 2 S n e=c1 …... e=c2 e=cn e=其它(default) switch ( e ) { case 判断值c1: S1; break; case 判断值c2: S2; break; …… case 判断值cn: Sn; break; default : Sn+1; break; } 其中, e是表达式。c1、c2...cn是常量表达式。S1、S2…Sn、Sn+1是一个语句或程序块。

5.3 switch 开关分支 例: 输出不同工资水平的税率。 void main( ) { char a; 例: 输出不同工资水平的税率。 void main( ) { char a; printf(“Please input the salary level \n ”); printf(“Between 1 to 5, which is char type. \n”); scanf(“%c”,&a); switch(a) { case ‘1’: printf(“taxis=60% \n”);break; case ‘2’: printf(“taxis=40% \n”);break; case ‘3’: printf(“taxis=20% \n”);break; case ‘4’: printf(“taxis=8% \n”);break; case ‘5’: printf(“taxis=0% \n”);break; default: printf(“Error”); }

5.3 switch 开关分支 使用 switch-case 分支语句时,应注意以下几点: switch 后面的e表达式,可以是整型常量或变量、字符型常量或变量、枚举类型表达式。其结果值必须是整型或字符型。 case后面的ci 为常量表达式,可以是一个整型、字符型或枚举常量。 各case 的次序是任意的 (default往往放在最后),但各case后的值必须不同。 default部分可以不要, 如果没有default部分, 则当e表达式的值与各case后的ci常量表达式的值都不一致时, 则程序不执行该结构中的任何部分。

5.3 switch 开关分支 各分支语句中的 break 语句作用是控制程序退出 switch 结构。若程序没有break语句,则程序将继续执行下面一个case中的程序块。 例:switch ( c ) { case ‘A’: u++; case ‘a’: l++; default: s++; } 没有break; 若c的取值是A,则三个分支即 u++、l++、 s++都被执行 若c的取值是a,则最后两个分支即 l++、s++被执行 若c的取值即不是A也不是a,则只执行 s++

5.3 switch 开关分支 在开关分支语句中,最后的 break语句也可以省略。 可以省略 switch ( e ) { case c1: S1; break; case c2: S2; …… case cn: Sn; default : Sn+1; } 可以省略

5.3 switch 开关分支 在switch开关分支语句结构中, 如果几种情况(多个表达式取值)都执行相同的程序块时, 则对应的多个case可共同使用同一个程序块。 程序中case 1、 case 2 和 case 3共用case 3语句。 switch ( c ) { case 1: case 2: case 3: printf(“taxis=30% \n”); break; case 4: printf(“taxis=8% \n”); break; default : printf(“taxis=0% \n”); break; }

5.3 switch 开关分支 switch语句用来实现多分支结构,条件判断如果有两个以上基于同一个数据类型变量的条件表达式时,选用 switch 语句比选用if-else if 语句的嵌套形式更方便。 例: 根据百分成绩,输出等级成绩 A B C D E。用switch分支语句编程。

5.3 switch 开关分支 input grade (0-100):89 <CR> grade B 运行程序 void main( ) { int c, grade; printf("input grade(0-100): "); scanf("%d",&grade); if (grade>100|| grade< 0) printf("wrong grade\n"); else { c=grade/10; switch ( c ) { case 6: printf("grade D\n"); break; case 7: printf("grade C\n"); break; case 8: printf("grade B\n”); break; case 9: case 10: printf("grade A\n"); break; default: printf(“grade E\n”); break: } input grade (0-100):89 <CR> grade B 运行程序

5.3 switch 开关分支 例5-7: 用if-else if根据百分成绩, 输出等级 A B C D。 >100或者<0: 出错, 90-100: A, 80-89: B, 70-79: C, 60-69: D, <60: 不及格。 void main( ) { int grade; printf("input grade(0-100):"); scanf(“%d”,&grade); if(grade>100 || grade< 0) printf("wrong grade\n"); else if(grade>=90) printf("grade A\n"); else if(grade>=80) printf("grade B\n"); else if(grade>=70) printf("grade C\n"); else if(grade>=60) printf("grade D\n"); else printf("failed\n"); }

5.3 switch 开关分支 缩排:良好的写作习惯 缩排是书写程序的一种方法。即语句相对于上一条语句后退若干个字符位置的书写方法(像写文章,每个段落的开始均缩进两个字的位置)。 缩排的目的是使源程序的层次清晰明了,增加源程序的可读性。

5.3 switch 开关分支 例如:在分支程序中,用缩排的书写方法,可清楚的看出程序的条件为真、条件为假时,程序的分支情况。 main( ) { int x,y,z,max; printf(“\n Please input x,y,z :”); scanf(“%d %d %d”,&x,&y,&z); if ( x >y ) { if ( x>z ) max=x; else max=z; } else { if ( y>z ) max=y; else max=z; printf(“\n max=%d”,max); main( ) { int x,y,z,max; printf(“\n Please input x,y,z :”); scanf(“%d %d %d”,&x,&y,&z); if ( x >y ) { if ( x>z ) max=x; else max=z; } else { if ( y>z ) max=y; else max=z; printf(“\n max=%d”,max);

5.4习题 5.1 什么是算术运算?什么是关系运算?什么是逻辑运算? 5.1 什么是算术运算?什么是关系运算?什么是逻辑运算? 5.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 5.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。   (1) a+b>c && b==c (2) a||b+c && b-c (3) !(a>b) && !c||1 (4) !(x=a) && (y=b) && 0 (5) !(a+b)+c-1 && b+c/2

5.4习题 5.4 有3个整数a、b、c,由键盘输入,输出其中最大的数。 5.5 有一函数: x (x<1) 5.5 有一函数: x  (x<1) y = 2x-1  (1≤x<10) 3x-11 (x≥10) 写一程序,输入x,输出y值。 5.6 给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数为321,应输出123。