深圳大学c语音幻灯片第四章-顺序结构举例

上传人:F****n 文档编号:88292827 上传时间:2019-04-23 格式:PPT 页数:23 大小:553KB
返回 下载 相关 举报
深圳大学c语音幻灯片第四章-顺序结构举例_第1页
第1页 / 共23页
深圳大学c语音幻灯片第四章-顺序结构举例_第2页
第2页 / 共23页
深圳大学c语音幻灯片第四章-顺序结构举例_第3页
第3页 / 共23页
深圳大学c语音幻灯片第四章-顺序结构举例_第4页
第4页 / 共23页
深圳大学c语音幻灯片第四章-顺序结构举例_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《深圳大学c语音幻灯片第四章-顺序结构举例》由会员分享,可在线阅读,更多相关《深圳大学c语音幻灯片第四章-顺序结构举例(23页珍藏版)》请在金锄头文库上搜索。

1、顺序程序设计举例,小写字母转盘 这个程序要求用户输入一个小写字母字符,求出该字母字符的前驱和后继字符,例如,c字符的前驱和后继分别是b和d,程序设计的分析: 求一个字母的前驱字母: 在没有学会条件控制之前,利用取余操作的特性,即任何一个整数除以26(26个字母)的余数只能在025之间。 前驱字母以z为参考点: 1. 求出字符ch(假设是w)与z之间的字符偏移数n=z-ch=z-w=3; 2. (n+1)%26=4则是ch(字母w)的前驱字母相对于z的偏移数; 3. z-(n+1)%26=122-4=118(即字母v)就是ch(字母w)的前驱字母。,a b c d e f g h i j k l

2、 m n o p q r s t u v w x y z,前驱偏移数4,顺序结构,求一个字母的后继: 可以a为参考点: 1. 求出输入的字符ch(假设是w)与a之间的字符偏移数n=ch-a=w-a=22; 2. (n+1)%26=23则是ch(字母w)的后继字母相对于a的偏移数; 3. a+(n+1)%26=97+23=120(即字母x)就是ch(字母w)的后继字母。 根据以上分析,这个程序应这样设计: (1) 定义三个字符型变量,分别用于接受用户输入的字符及用于存放其前驱和后继字符。 (2) 调用getchar函数获取用户输入的字母。 (3) 求得该字母的前驱字母和后继字母,并输出其结果。,

3、a b c d e f g h i j k l m n o p q r s t u v w x y z,后继偏移数23,#include void main ( ) char ch, ch1, ch2; /变量定义 ch = getchar(); /读取一字符 putchar(n); /换行 ch1 = z - (z - ch + 1) % 26; /求前驱字符 ch2 = a + (ch - a + 1) % 26; /求后继字符 printf(“ch1 = %c, ch2 = %cn“,ch1,ch2); /显示结果 ,具体程序如下:,第4章 选择结构程序设计,关系运算符、逻辑运算符、条件

4、运算符,1. 关系运算符和关系表达式,关系运算符,关系表达式,用关系运算符连接起来的式子称为关系表达式。 关系表达式的一般形式为:表达式 关系运算符 表达式,例:a + b c d x 3 / 2 a + 1 c i 5 * j = k + 1,注意: C语言用0表示假,非0表示真。 一个关系表达式的值不是0就是1,0表示假,1表示真。,2. 逻辑运算符和逻辑表达式,逻辑运算符,逻辑运算真值表,逻辑运算符和逻辑表达式,答 (year%4=0&year%100!=0)|(year%400=0) 案 值为真(1)是闰年,否则为非闰年。,条件运算符可嵌套 如 x 0 ? 1 : (x 0 ? -1

5、: 0),3. 条件运算符与表达式 一般形式: expr1 ? expr2 : expr3 功能:相当于条件语句,例:小写字母转盘。 #include #include void main ( ) char ch, ch1, ch2; /变量定义 ch = getchar ( ); /读取一字符 putchar (n); /换行 ch1 = (ch = = a ? z : ch 1); /求前驱字符 ch2 = (ch = = z ? a : ch + 1); /求后继字符 printf (“ch1 = %c, ch2 = %cn“, ch1, ch2); /显示结果 ,选择结构的程序设计,1

6、. if语句,简单if语句形式,if (表达式) 语句;,格式:,执行流程:,例如:下面的程序段是输入两个整数,输出其中的大数。 int a, b, max; printf (“input two numbers: “); scanf (“%d%d“, ,if_else形式,if (表达式) 语句1; else 语句2;,格式:,执行流程:,例如:下面的程序段同样是输出两个整数中的最大数。 int a, b; printf (“input two numbers: “); scanf (“%d%d“, ,1. if语句,if_else_if形式,if(表达式1) 语句1; else if (表

7、达式2) 语句2; else if (表达式3) 语句3; else 语句n;,格式:,执行流程:,例如:下面的程序段是判断输入字符的种类。 char c; printf (“Enter a character: “); c = getchar ( ); if (c = 0 ,例 输入两数并判断其大小关系,#include void main ( ) int x, y; printf (“Enter integer x, y: “); scanf (“%d, %d“, ,if语句嵌套:,语言规定,在缺省 时,else总是和它上面离它最近的未配对的if配对,例:考虑下面程序输出结果: void

8、main( ) int x = 100, a = 10, b = 20; int v1 = 5, v2 = 0; if (a b) if (b != 15) if (!v1) x=1; else if (v2) x = 10; printf (“%d”, x); ,结果:100,if_else 配对原则,2. switch语句(开关分支语句) 一般形式:,switch ( 表达式) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break; default: 语句组 ; break; ,执行过程:,使用switc

9、h语句注意事项,(1) switch后面的“表达式”,可以是int、char和枚举型中的一种,但不可为浮点型。,float a, b = 4.0; scanf (“%f“, ,使用switch语句注意事项,(4) 每个case后面必须是“常量表达式”,表达式中不能包含变量。,例:按成绩分成A、B、C、D、E、F几个等级。 int score; printf (“Enter Score: “); scanf (“%d“, ,使用switch语句注意事项,(5) case后面的“常量表达式”仅起语句标号作用,系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断。,#include void

10、main ( ) char ch; ch = getchar( ); switch ( ch ) case Y : printf (“Yesn“); break; case N : printf (“Non“); break; case A : printf (“Alln“); break; default : printf (“Yes,No or Alln“); ,运行结果: No,/假设输入为:N,#include void main ( ) char ch; ch = getchar ( ); switch ( ch ) case Y : printf (“Yesn“); break;

11、case N : printf (“Non“); case A : printf (“Alln“); break; default : printf (“Yes,No or Alln“); ,/假设输入为:N,运行结果: No ALL,使用switch语句注意事项,(6)多个case子句,可共用同一语句(组)。,例:当a的值是1、2、3时,将b的值加2; 当a的值是4、5、6时,将b的值减2。 int a, b = 4; scanf (“%d“, ,使用switch语句注意事项,(9) switch语句可以嵌套。,void main ( ) int x = 1, y = 0, a = 0, b

12、 = 0; switch ( x ) case 1: switch ( y ) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf (“na = %d, b = %d“, a, b); ,运行结果: a = 2,b = 1,选择结构程序设计举例,【例】已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下所示(计量单位:元)。计算员工的当月薪水。,程序应该这样来设计: 首先定义3个变量分别存放员工所接工程的利润、提成比例和当月薪水; 调用sc

13、anf函数接受用户输入员工所接工程的利润; 然后根据上表的规则,计算该员工当月的提成比率。 最后计算该员工当月的薪水(保底薪水+所接工程的利润*提成比率),并输出结果。,#include void main ( ) long profit; /所接工程的利润 float ratio; /提成比率 float salary = 500; /薪水,初始值为保底薪水500 printf (“Input profit: “); /提示输入所接工程的利润 scanf (“%ld“, /输出结果 ,运行结果: Input profit: 4000 salary = 1100.00,方法一:使用if语句,0

14、.10默认为double型,不进行强制类型转换将产生警告信息!,#include void main ( ) long profit; /所接工程的利润 float ratio; /提成比率 float salary = 500; /薪水,初始值为保底薪水500 printf (“Input profit: “); /提示输入所接工程的利润 scanf (“%ld“, /输出结果 ,方法二:使用if_else if语句,方法三:使用switch语句,算法设计要点: 为使用switch语句,必须将利润profit与提成的关系转换成某些整数与提成的关系。 分析本题可知,提成的变化点都是1000的整

15、数倍(1000、2000、5000、),将利润profit整除1000: profit 1000 对应0、1 1000 profit 2000 对应1、2 2000 profit 5000 对应2、3、4、5 5000 profit 10000 对应5、6、7、8、9、10 10000 profit 对应10、11、12、 为解决相邻两个区间的重叠问题,最简单的方法就是:利润profit先减1(最小增量),然后再整除1000即可: profit 1000 对应0 1000 profit 2000 对应1 2000 profit 5000 对应2、3、4 5000 profit 10000 对应5、6、7、8、9 10000 profit 对应10、11、12、,#include void main ( ) long profit;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号