Chap 3 分支结构 3.1 统计输入的一批字符中各类字符的数量 3.2 查询自动售货机中商品的价格 3.3 分支结构程序设计.

Slides:



Advertisements
Similar presentations
2 和 5 的倍数的特征 运动热身 怎样找一个数的倍数? 从小到大写出 2 的倍数( 10 个): 写出 5 的倍数( 6 个) 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 5 , 10 , 15 , 20 , 25 , 30.
Advertisements

CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
5 选择结构.
Loops.
第 5 章 流程控制 (一): 條件分支.
補充: Input from a text file
C语言实验 第一课 标题:学号+姓名.
第4章 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的 如果你在家,我去拜访你 如果考试不及格,要补考
程序设计基础.
C语言程序设计 第五章 选择结构程序设计.
主讲教师:吴琼 微信群:C语言2016 QQ群: 密码scu2016 昵称:“真名+学号”
第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.
Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
Function.
Introduction to the C Programming Language
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Chap 3 分支结构 3.1 简单的猜数游戏 3.2 四则运算 3.3 查询自动售货机中商品的价格.
第四章 C 语言中的输入和输出.
1. 說明一個一維整數陣列passwd,下標範圍0至49 2. 在屏幕顯示 "Enter password"
C语言 程序设计基础与试验 刘新国、2012年秋.
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
1.2 MATLAB变量表达式与数据格式 MATLAB变量与表达式 MATLAB的数据显示格式
C语言程序设计基础 刘新国.
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
第二章 Java语言基础.
第三章 顺序结构程序设计 主讲教师 贾月乐 电话:
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
第七章 函数及变量存贮类型 7.1 函数基础与C程序结构 7.2 函数的定义和声明 7.3 函数的调用 7.4 函数的嵌套与递归
第七章 操作符重载 胡昊 南京大学计算机系软件所.
第四章 选择结构程序设计 计算机科学学院.
Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度
第4章 PHP流程控制语句.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言概述 第一章.
程式結構&語法.
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
C语言程序设计 教案 崔武子制作
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
Chap 5 函数 5.1 计算圆柱体积 5.2 数字金字塔 5.3 复数运算.
輸出與輸入(I/O).
C程序设计.
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
第2章 基本数据及其运算 本章学习的目标: 1、掌握基本数据的各种表示,基本数据常数的书写方法;
第二章 类型、对象、运算符和表达式.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第四章 C 语言中的输入和输出.
第四章 选择结构程序设计 计算机科学学院.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
第四章 分支结构的C程序设计 4.1 if语句 4.2 switch语句 4.3 程序举例.
Introduction to the C Programming Language
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
Chap 6 数据类型和表达式 6.1 数据的存储和基本数据类型 6.2 常量和变量 6.3 数据的输入和输出 6.4 类型转换
C/C++基礎程式設計班 字元與字串 講師:林業峻 CSIE, NTU 3/14, 2015.
Chap 7 数 组 7.1 排序问题 7.2 找出矩阵中最大值所在的位置 7.3 进制转换.
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
多重條件選擇敘述
Chap 10 函数与程序结构 10.1 圆形体积计算器 10.2 汉诺塔问题 10.3 长度单位转换 10.4 大程序构成.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
顺序结构程序设计 ——关于“字符串”和数值.
Q1(a) 小偉打算編寫一個程序。該程序把兩個44的表內的數字相加。表3內的數字是由表1和表2應格子內的數字相加而成。例如:
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

Chap 3 分支结构 3.1 统计输入的一批字符中各类字符的数量 3.2 查询自动售货机中商品的价格 3.3 分支结构程序设计

3.1 统计输入的一批字符中各类字符的数量 例3-1 输入10个字符,统计其中英文字母、数字字符和其他字符的个数。 3.1.1 程序解析 3.1 统计输入的一批字符中各类字符的数量 例3-1 输入10个字符,统计其中英文字母、数字字符和其他字符的个数。 3.1.1 程序解析 3.1.2 字符类型 3.1.3 字符数据的输入和输出 3.1.4 逻辑运算 3.1.5 else-if 语句

3.1.1 程序解析 多层缩进的书写格式 使程序层次分明 #include <stdio.h> int main(void) { int digit, i, letter, other; char ch;   digit = letter = other = 0; printf(“Enter 10 characters: "); for(i = 1; i <= 10; i++){ ch = getchar(); /* 从键盘输入一个字符,赋值给变量 ch */ if((ch >= 'a' && ch <= 'z' ) || ( ch >= 'A' && ch <= 'Z')) letter ++; else if(ch >= '0' && ch <= '9') /* 如果ch是数字字符 */ digit ++; else other ++; } printf("letter=%d,digit=%d,other=%d\n",letter,digit,other); return 0; 3.1.1 程序解析 input 10 characters: Reold 123? letter=5, digit=3, other=2 多层缩进的书写格式 使程序层次分明

3.1.2 字符类型 char ch; (ch >= 'a' && ch <= 'z' ) || ( ch >= 'A' && ch <= 'Z') (ch >= '0' && ch <= '9') 字符型数据 字符变量:ch 字符常量: 'a'

字符常量 'a' 'z' 'A' 'Z' '0' '9' ' ' '\n' ASCII字符集:列出所有可用的字符 '0'-'9' 'A'-'Z' 'a'-'z' 区分数字 1 和数字字符 '1'

字符变量 char ch; 定义字符变量ch,用于存放字符型数据。 ch = 'A';

3.1.3 字符型数据的输入和输出 字符输入函数getchar 字符输出函数putchar 输入一个字符 char ch; 3.1.3 字符型数据的输入和输出 字符输入函数getchar 输入一个字符 char ch; ch = getchar( ); 字符输出函数putchar 输出一个字符 putchar(输出参数); char ch; ch = getchar(); putchar (ch); putchar (‘?'); 字符常量或字符变量

调用scanf和printf输入输出字符 double value1, value2; char operator; printf(“Type in an expression: ”); scanf(“%lf%c%lf”, &value1, &operator, &value2); printf(“%.2f %c %.2f”, value1, operator, value2); Type in an expression: 10.0+5.61 10.00 + 5.61

3.1.4 逻辑运算 (ch >= 'a' && ch <= 'z' ) || ( ch >= 'A' && ch <= 'Z') ch >= '0' && ch <= '9‘ 关系运算逻辑值(true/false) 逻辑运算

3种逻辑运算符 逻辑与 && 逻辑或 || 逻辑非 ! X && Y X || Y X Y X Y ! X X

逻辑运算符的含义 逻辑与 && 逻辑或 || 逻辑非 ! 逻辑与 && 逻辑或 || 逻辑非 ! (x>1)&&(y>1) (x>1)||(y>1) (x>1) !(x>1) 即 x<=1

逻辑运算符的功能 逻辑与 && 逻辑或 || 逻辑非 ! a b a&&b a||b !a 假 假 假 假 真 假 真 假 真 真 逻辑与 && 逻辑或 || 逻辑非 ! a b a&&b a||b !a 假 假 假 假 真 假 真 假 真 真 真 假 假 真 假 真 真 真 真 假

逻辑表达式 逻辑表达式:用逻辑运算符将逻辑运算对象连接起来的式子。 (ch >= 'a') && (ch <= 'z') 或: ch >= 'a' && ch <= 'z' (ch >= 'a' && ch <= 'z') || ( ch >= 'A' && ch <= 'Z') 判断ch 是否为英文字母

条件的表示 例3-2 写出满足下列条件的C表达式。 ch 是空格或者回车 ch == ' ' || ch == '\n' number是偶数 year 是闰年,即 year 能被 4 整除但不能被 100 整除,或 year 能被 400 整除 (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)

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 语句 if (表达式1) 语句1 else if (表达式2) 语句2 …… if((ch >= 'a' && ch <= 'z' )||( ch >= 'A' && ch <= 'Z')) letter ++; else if(ch >= '0' && ch <= '9') digit ++; else other ++; if (表达式1) 语句1 else if (表达式2) 语句2 …… else if (表达式n-1) 语句n-1 else 语句n 假 表达式1 表达式2 语句1 语句2 语句n-1 语句n 真 表达式n-1 …

分段计算水费 例3-3 分段计算水费

源程序-分段计算水费 # include <stdio.h> int main(void) { double x, y; printf("Enter x:"); scanf("%lf", &x); if (x < 0){ y = 0; } else if (x <= 15){ y = 4 * x / 3; else{ y = 2.5 * x - 10.5; printf("f(%.2f) = %.2f\n", x, y); return 0;

3.2 查询自动售货机中商品的价格 例3-4 查询自动售货机中商品的价格 3.2.1 程序解析 3.2.2 switch语句

3.2.1 程序解析 假设自动售货机出售4种商品,薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可乐(cola),售价分别是每份3.0、2.5、4.0和3.5元。在屏幕上显示以下菜单,用户可以连续查询商品的价格,当查询次数超过5次时,自动退出查询;不到5次时,用户可以选择退出。当用户输入编号1~4,显示相应商品的价格;输入0,退出查询;输入其他编号,显示价格为0。 [1] Select crisps [2] Select popcorn [3] Select chocolate [4] Select cola [0] Exit

[1] Select crisps [2] Select popcorn [3] Select chocolate [4] Select cola [0] Exit Enter choice: 1 price = 3.0 Enter choice: 7 price = 0.0 [1] Select crisps Enter choice: 0 Thanks #include <stdio.h> Int main(void) { int choice, i; double price; for( i = 1; i <= 5; i++) { printf("[1] Select crisps \n"); printf("[2] Select popcorn \n"); printf("[3] Select chocolate \n"); printf("[4] Select cola \n"); printf("[0] exit \n");   printf("Enter choice: "); scanf("%d", &choice);   if(choice == 0) break; switch (choice) { case 1: price=3.0; break; case 2: price=2.5; break; case 3: price=4.0; break; case 4: price=3.5; break; default: price=0.0; break; } printf("price = %0.1f\n", price); printf("Thanks \n");

3.2.2 switch语句 处理多分支选择问题,3种情况 1、在switch语句的每个语句段中都使用break语句 case 常量表达式1:语句段1; break; case 常量表达式2:语句段2 ; break; ....… case 常量表达式n:语句段n ; break; default : 语句段n+1 ; break; }

用else-if 如何实现? switch (choice) { switch(表达式){ case 1: price=3.0; break; case 2: price=2.5; break; case 3: price=4.0; break; case 4: price=3.5; break; default: price=0.0; break; } switch(表达式){ case 常量表达式1:语句段1; break; case 常量表达式2:语句段2 ; break; ....… case 常量表达式n:语句段n ; break; default : 语句段n+1 ; break; } 用else-if 如何实现? 表达式的值=常量表达式 2 的值 表达式 语句段1 语句段2 语句段n 语句段n+1 表达式的值=常量表达式 1 的值 表达式的值=常量表达式 n 的值 其他 break

求解简单表达式 例3-5 输入一个形式如“操作数 运算符 操作数”的四则运算表达式,输出运算结果。 例如: 输入:3.1+4.8 输出:7.9

源程序 # include <stdio.h> int main(void) { char operator; double value1, value2; printf("Type in an expression: "); scanf("%lf%c%lf", &value1, &operator, &value2); switch(operator){ case '+': printf("=%.2f\n", value1+value2); break; case '-': printf("=%.2f\n", value1-value2); case '*': printf("=%.2f\n", value1*value2); case '/': printf("=%.2f\n", value1/value2); default: printf("Unknown operator\n"); } return 0; 源程序 Type in an expression: 3.1+4.8 =7.9

2、在switch中不使用break switch(表达式){ case 常量表达式1:语句段1; case 常量表达式2:语句段2; ....… case 常量表达式n:语句段n; default : 语句段n+1; }

switch(表达式){ case 常量表达式1:语句段1; case 常量表达式2:语句段2; ....… case 常量表达式n:语句段n; default : 语句段n+1; } 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; } price=? 表达式的值=常量表达式 2 的值 表达式 语句段1 语句段2 语句段n 语句段n+1 表达式的值=常量表达式 1 的值 表达式的值=常量表达式 n 的值 其他

3、在switch的某些语句段中使用break 例3-6 输入10个字符,分别统计出其中空格或回车、数字和其他字符的个数。 例3-1 输入10个字符,统计其中英文字母、数字字符和其他字符的个数。

int main(void) { int blank, digit, i, other; char ch; blank = digit = other = 0; printf("Enter 10 characters: "); for(i = 1; i <= 10; i++){ ch = getchar(); switch (ch){ case ' ' : case '\n': blank ++; break; case '0' : case '1' : case '2' : case '3' : case '4' : case '5' : case '6' : case '7' : case '8' : case '9' : digit ++; default: other ++; } printf("blank=%d, digit=%d, other=%d\n", blank, digit, other); return 0; Enter 10 characters: Reold 123? blank=1, digit=3, other=6

3.3 分支结构程序设计 分支结构一般分为二分支和多分支两种结构 用条件语句(if 和 switch)实现选择

3.3.1 二分支结构和基本的 if 语句 if (表达式) 语句1 if (表达式) 语句1 else 语句2 一条语句 语句1 表达式 真 假 语句1 表达式 语句2 真 假

判断数字的奇偶性 例3-7 输入1个整数,判断该数是奇数还是偶数。 number % 2 == 0

源程序-判断数字的奇偶性 #include <stdio.h> int main(void) { int number; printf("Enter a number: "); scanf("%d", &number); if(number % 2 == 0){ printf("Tne number is even. \n"); } else{ printf("Tne number is odd. \n"); return 0;

求绝对值 例3-8 输入1个整数,输出它的绝对值 。 当number < 0时,number = - number; 例3-8 输入1个整数,输出它的绝对值 。 当number < 0时,number = - number; 当number >= 0时,number = ?

源程序-求绝对值 #include <stdio.h> int main(void) { int number; printf("Enter a number: "); scanf("%d", &number); if(number < 0){ number = -number; } printf("The absolute value is %d.\n", number); return 0; Enter a number: 10 The absolute value is 10. Enter a number: -300 The absolute value is 300.

3.3.2 多分支结构与嵌套的 if 语句和switch语句 多分支结构有多种形式 实现方法: 嵌套的 if 语句 else – if 语句 嵌套的 if - else语句 switch语句

嵌套的 if 语句 if (表达式) 语句1 else 语句2 else – if 语句 嵌套的 if - else语句 if 语句

else – if 语句 if (表达式1) 语句1 else if(表达式2) 语句2 …… else if(表达式n-1) 语句n-1 else 语句n else – if 语句 假 表达式1 表达式2 语句1 语句2 语句n-1 语句n 真 表达式n-1 n个分支需要n-1次比较

嵌套的 if – else 语句 if(表达式1) else if(表达式2) 语句1 else 语句2 if(表达式3) 语句3 语句4 真 假 表达式2 语句3 语句1 语句2

2种嵌套if语句的比较 if (x < 1) y = x + 1; else if (x < 2) y = x + 2; 真 假 y=x+3 if (x < 1) y = x + 1; else if (x < 2) y = x + 2; else y = x + 3; 假 x<1 x<2 y=x+1 y=x+2 真 y=x+3 if (x < 2) if (x < 1) y = x + 1; else y = x + 2; else y = x + 3;

else 和 if 的匹配 if(表达式1) else else 与最靠近它的、没有与别的 else 匹配过的 if 匹配 if(表达式1)

改变else 和 if 的配对 例3-10 改写下列 if 语句,使 else 和第1个 if 配对。 if (x < 2) if (x < 1) y = x + 1; else y = x + 2; 每条语句的执行条件? if (x < 2){ if (x < 1) y = x + 1; } else y = x + 2; if (x < 2) if (x < 1) y = x + 1; else; else y = x + 2;

本章要点 什么是分支结构?它的作用是什么? switch 语句中的 break 起什么作用? 逻辑运算和关系运算的相同之处是什么? 它们之间又有什么不同? 字符型数据在内存中是如何存储的?