《C语言学习课件第3讲.ppt》由会员分享,可在线阅读,更多相关《C语言学习课件第3讲.ppt(43页珍藏版)》请在三一办公上搜索。
1、Chap 3 分支结构,3.1 统计输入的一批字符中各类字符的数量 3.2 查询自动售货机中商品的价格 3.3 分支结构程序设计,本章要点,什么是分支结构?它的作用是什么?switch 语句中的 break 起什么作用?逻辑运算和关系运算的相同之处是什么?它们之间又有什么不同?字符型数据在内存中是如何存储的?,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 int
2、 main(void)int digit,i,letter,other;char ch;digit=letter=other=0;printf(“Enter 10 characters:);for(i=1;i=a,input 10 characters:Reold 123?letter=5,digit=3,other=2,多层缩进的书写格式使程序层次分明,3.1.2 字符类型,char ch;(ch=a&ch=A&ch=0&ch=9)字符型数据字符变量:ch字符常量:a,字符常量,a z A Z 0 9 nASCII字符集:列出所有可用的字符每个字符:惟一的次序值(ASCII 码)0-9A-Z
3、a-z,区分数字 1 和数字字符 1,字符变量,char ch;定义字符变量ch,用于存放字符型数据。ch=A;,3.1.3 字符型数据的输入和输出,字符输入函数getchar输入一个字符char ch;ch=getchar();字符输出函数putchar输出一个字符putchar(输出参数);,字符常量或字符变量,char ch;ch=getchar();putchar(ch);putchar(?);,aa?,调用scanf和printf输入输出字符,double value1,value2;char operator;printf(“Type in an expression:”);sca
4、nf(“%lf%c%lf”,Type in an expression:10.0+5.61 10.00+5.61,3.1.4 逻辑运算,(ch=a&ch=A&ch=0&ch=9x=1 关系运算-1=x=1,0-1 1x,x=-1 并且 x=-1&x=1,3种逻辑运算符,逻辑与&逻辑或|逻辑非!,X,X&Y,Y,X,Y,X|Y,X,!X,逻辑与&逻辑或|逻辑非!(x1)&(y1)(x1)|(y1)(x1)!(x1)即 x=1,逻辑运算符的含义,逻辑运算符的功能,逻辑与&逻辑或|逻辑非!a b a&b a|b!a假 假 假 假 真假 真 假 真 真真 假 假 真 假真 真 真 真 假,逻辑表达式,
5、逻辑表达式:用逻辑运算符将逻辑运算对象连接起来的式子。(ch=a)&(ch=a&ch=a&ch=A&ch=Z)判断ch 是否为英文字母,条件的表示,例3-2 写出满足下列条件的C表达式。ch 是空格或者回车。ch=|ch=nnumber是偶数。number%2=0year 是闰年,即 year 能被 4 整除但不能被 100 整除,或 year 能被 400 整除。(year%4=0&year%100!=0)|(year%400=0),3.1.5 else if 语句,if(ch=a 实现多路选择,else if 语句,if(表达式1)语句1else if(表达式2)语句2else if(表达
6、式n-1)语句n-1else 语句n,if(ch=a,分段计算水费,例3-3 分段计算水费,源程序-分段计算水费,#include int main(void)double x,y;printf(Enter x:);scanf(%lf,Enter x:-0.5f(-0.50)=0.00,Enter x:9.5f(9.50)=12.67,Enter x:21.3f(21.30)=42.75,Enter x:?,3.2 查询自动售货机中商品的价格,例3-4 查询自动售货机中商品的价格3.2.1 程序解析3.2.2 switch语句,3.2.1 程序解析,假设自动售货机出售4种商品,薯片(crisp
7、s)、爆米花(popcorn)、巧克力(chocolate)和可乐(cola),售价分别是每份3.0、2.5、4.0和3.5元。在屏幕上显示以下菜单,用户可以连续查询商品的价格,当查询次数超过5次时,自动退出查询;不到5次时,用户可以选择退出。当用户输入编号14,显示相应商品的价格;输入0,退出查询;输入其他编号,显示价格为0。1 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 Exit,#include Int main(void)int choice,i;double price;for(i=1;i=5;i+)
8、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,1 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter choice:1price=3.01 Select crisps2 Select popcorn 3 Select chocolate4 S
9、elect cola 0 ExitEnter choice:7price=0.01 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter choice:0Thanks,3.2.2 switch语句,处理多分支选择问题,3种情况1、在switch语句的每个语句段中都使用break语句switch(表达式)case 常量表达式1:语句段1;break;case 常量表达式2:语句段2;break;.case 常量表达式n:语句段n;break;default:语句段n+1;break;,switch(表达
10、式)case 常量表达式1:语句段1;break;case 常量表达式2:语句段2;break;.case 常量表达式n:语句段n;break;default:语句段n+1;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;,用else-if 如何实现?,求解简单表达式,例3-5 输入一个形式如“操作数 运算符 操作数”的四则运算表达式,输出运算结果。例如:输入:3.1+4
11、.8 输出:7.9,源程序,#include int main(void)char operator;double value1,value2;printf(Type in an expression:);scanf(%lf%c%lf,Type in an expression:3.1+4.8=7.9,如果除数为0?,2、在switch中不使用break,switch(表达式)case 常量表达式1:语句段1;case 常量表达式2:语句段2;.case 常量表达式n:语句段n;default:语句段n+1;,switch(表达式)case 常量表达式1:语句段1;case 常量表达式2:语句
12、段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=?,3、在switch的某些语句段中使用break,例3-6 输入10个字符,分别统计出其中空格或回车、数字和其他字符的个数。,例3-1 输入10个字符,统计其中英文字母、数字字符和其他字符的个数。,int main(void)int blank,digit,i,other;char ch;blank=digi
13、t=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+;break;default:other+;break;printf(blank=%d,digit=%d,other=%dn,blank,digit,other);return 0;,Enter 10 characters:Reold 123
14、?blank=1,digit=3,other=6,3.3 分支结构程序设计,分支结构一般分为二分支和多分支两种结构用条件语句(if 和 switch)实现选择3.3.1 二分支结构和基本的 if 语句3.3.2 多分支结构与嵌套的 if 语句和switch语句,3.3.1 二分支结构和基本的 if 语句,if(表达式)语句1else 语句2,if(表达式)语句1,一条语句,判断数字的奇偶性,例3-7 输入1个整数,判断该数是奇数还是偶数。,number%2=0,源程序-判断数字的奇偶性,#include int main(void)int number;printf(Enter a numbe
15、r:);scanf(%d,Enter a number:329 Tne number is odd.,Enter a number:1028Tne number is even.,求绝对值,例3-8 输入1个整数,输出它的绝对值。,当number=0时,?,源程序-求绝对值,#include int main(void)int number;printf(Enter a number:);scanf(%d,Enter a number:10 The absolute value is 10.,Enter a number:-300 The absolute value is 300.,3.3.
16、2 多分支结构与嵌套的 if 语句和switch语句,多分支结构有多种形式实现方法:嵌套的 if 语句 else if 语句嵌套的 if-else语句switch语句,嵌套的 if 语句,if(表达式)语句1else 语句2,if 语句,if 语句,else if 语句 嵌套的 if-else语句,if(表达式1)语句1else if(表达式2)语句2else if(表达式n-1)语句n-1else 语句n,else if 语句,n个分支需要n-1次比较,嵌套的 if else 语句,if(表达式1)if(表达式2)语句1else 语句2 elseif(表达式3)语句3 else 语句4,if
17、(x 1)y=x+1;else if(x 2)y=x+2;else y=x+3;,if(x 2)if(x 1)y=x+1;else y=x+2;else y=x+3;,2种嵌套if语句的比较,else 和 if 的匹配,if(表达式1)if(表达式2)语句1else 语句2 elseif(表达式3)语句3 else 语句4,if(表达式1)if(表达式2)语句1 elseif(表达式3)语句3 else 语句4,else 与最靠近它的、没有与别的 else 匹配过的 if 匹配,if(表达式1)if(表达式2)语句1 elseif(表达式3)语句3 else 语句4,改变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;,每条语句的执行条件?,