收藏 分享(赏)

C语言程序设计-案列PPT课件.ppt

上传人:Facebook 文档编号:3722715 上传时间:2018-11-16 格式:PPT 页数:59 大小:460KB
下载 相关 举报
C语言程序设计-案列PPT课件.ppt_第1页
第1页 / 共59页
C语言程序设计-案列PPT课件.ppt_第2页
第2页 / 共59页
C语言程序设计-案列PPT课件.ppt_第3页
第3页 / 共59页
C语言程序设计-案列PPT课件.ppt_第4页
第4页 / 共59页
C语言程序设计-案列PPT课件.ppt_第5页
第5页 / 共59页
点击查看更多>>
资源描述

1、程序设计基础(C语言),第二章/以案例为中心,课程主线:案例综合作业,学生信息管理程序 管理一个或一批学生的信息 学生信息:学号、姓名、成绩等 人机交互:命令行方式 显示提示符,提醒用户输入命令 接收并处理命令,显示命令结果 显示提示符,表明上次命令处理结束,并等待新的命令,如此循环,直到接收到结束命令 屏幕、键盘、文本界面 功能:计算、列表、排序、查找、存贮等,案例需求1,编写学生信息管理程序,实现: 命令行交互方式 提示符功能,提示符为“ST1” 命令格式为“命令符参数回车”,命令符为字母,不分大小写,根据命令要求,可以有多个或没有参数,参数间使用空格分隔开。 帮助功能,命令符H,显示关于

2、命令的使用说明 退出功能,命令符Q,退出程序 分析功能,命令符A,参数为学号,性别,成绩(带小数),输出学号奇偶,四舍五入后的成绩,成绩绩点,以及成绩所属分数段(90分以上A,80分以上B等),运行示例,ST1 ST1A 9234567 M 69.5 09234567,Odd,Male 70 2.0 C ST1H Student Program 1 HelpA: AnalysisH: HelpQ: Quit ST1Q Good-Bye.,提示符,直接换行 信息分析命令学号,奇偶,性别成绩,绩点,档次 显示帮助命令退出程序命令,实现步骤,关于A命令的实现 数据类型:学号,性别,成绩 奇偶问题,性

3、别问题,四舍五入,绩点计算,成绩分档 关于命令行交互的实现 总循环:提示符接收命令处理命令 命令分类处理的实现 退出命令 命令行交互的优化 集成与调试,第一阶段的问题、相关知识与实现,关于A命令的实现 数据类型:学号/长整型,性别/字符,成绩/浮点数 奇偶问题 性别问题 四舍五入问题 绩点计算问题 成绩分档问题 组装独立程序(文件名ex2-1.C),基本数据类型,long,32位二进制,表示整数(长整型) 输入输出格式符:%ld(long decimal) 如 long num; scanf(“%ld“,输入A命令参数,变量定义 long num; char sex; float score;

4、 输入语句 scanf(“%ld %c %f“,注1:语句可多行(格式串内部与名称不能分行) 注2:%d与%c之间加一个空格,奇偶问题,判断奇偶 若num为偶数,则输出Even,否则输出Odd 判断偶数:num%2=0或num%2!=1 判断奇数:num%2!=0或num%2=1 奇偶输出 if ( num%2=0 )printf( “Even“ ); elseprintf( “Odd“ );,性别问题,判断性别 若sex为m或M,则表示男性,输出Male 若sex为f或F,则表示女性,输出Female 否则表示未知,输出Unknown 表示“或”的运算 逻辑运算符:| 表示“如果则否则如果则

5、否则”的语句 if语句的嵌套:else if,表示字符的常量与ASCII编码,表示字符的常量,字符两边加单引号 大写字母,如M、F等 小写字母,如m、f等 数字字符,如0、9等 标点符号,如%、,等 控制字符,如n、t等 错误常量,如mM、123等 字符编码,ASCII编码 编码顺序:控制字符、空格、数字字符、大写字母、小写字母,处理逻辑真假的运算:逻辑运算符,表达式的逻辑值:0为假,非0为真 真假的表达式值:假为0,真为1 逻辑与(&) 逻辑值均为真结果真,有一个假结果假 (5=3) & (5!=3)是真 逻辑或(|) 逻辑值均为假结果假,有一个真结果真 (5=3) | (5 =3)是假 !

6、5是假(非0为真),优先级:逻辑非逻辑与逻辑或,我是男人 & 我是女人 !我是男人 | !我是女人 老师教C语言 & !(老师是女人 | 老师是小学生) 我是好人 & !你是好人 & 老师差劲 | 12 我是好人&!我是坏人 !我是好人|我是坏人 严格定义,无歧义,逻辑运算算术运算,设 a,b 是两个1位二进制 记 ab(c d)2 则低位da&!b|!a&b高位ca&b 逻辑与电路 开关电路门电路逻辑电路 运算电路运算器CPU,性别处理,if(sex=m|sex=M)printf(“Male“); else if(sex=f|sex=F)printf(“Female“);elseprintf

7、(“Unknown“); ,如果男性 则显示Male 否则,如果女性 则显示Female 否则显示Unknown,性别显示的优化else if,if ( sex=m | sex=M )printf( “Male“ ); else if ( sex=f | sex=F )printf( “Female“ ); elseprintf( “Unknown“ );,四舍五入问题相关知识点,将小数值赋值给整数变量,截去小数部分 设 int n; 若 n=4.6,则n结果为4 强制类型转换运算,在表达式前加“(类型)”表示将表达式转换为指定类型 如(int)4.6 结果为4 如(float)5/2结果为2

8、.5 如(float)(5/2)结果为2.0,四舍五入问题,设定义 float x; 截去小数:(int)x 四舍五入:(int)(x+0.5) x=4.2结果4,x=4.6结果5 小数点后第3位四舍五入 (int)(100*x+0.5)/100.0 如x=4.1234.12 如x=4.1284.13,int sc; sc=(int)(score+0.5);,绩点问题上海大学绩点计算表,成绩绩点计算流程(按从大到小顺序),绩点求解程序段,float pt; if (sc=90) pt=4.0; else if (sc=85) pt=3.7; else if (sc=82) pt=3.3; el

9、se if (sc=78) pt=3.0; else if (sc=75) pt=2.7; else if (sc=72) pt=2.3; else if (sc=68) pt=2.0; else if (sc=66) pt=1.7; else if (sc=64) pt=1.5; else if (sc=60) pt=1.0; else pt=0.0;,等级问题:有规律的分支,分支语句:switch语句先计算表达式的值 再按值转到不同的分支入口,switch标准形式,switch (表达式) case 值1: 语句1case 值2: 语句2case 值n: 语句ndefault: 语句n+1

10、 ,switch常用形式,switch (表达式) case 值1: 语句1; break;case 值2: 语句2; break;case 值n: 语句n; break;default: 语句n+1; ,break语句表示退出当前switch,等级计算依成绩的十位数分档,十进制的各位数n的十进制个位数 n % 10 n的十进制十位数 n / 10 % 10 n的十进制百位数 n / 100 % 10,十六进制的各位数n的十六进制最低位 n % 16 n的十六进制次低位 n / 16 % 16 n的十六进制再低位 n / 256 % 16,除进制求余方法,等级求解程序段,char sv; sw

11、itch (sc/10) case 10:case 9: sv=A; break;case 8: sv=B; break;case 7: sv=C; break;case 6: sv=D; break;default: sv=E; ,处理A命令的独立程序,变量定义在前:num,sex,score,sc,pt,sv (1)输入3个参数 (2)计算并输出奇偶 (3)输出性别 (4)计算并输出成绩的四舍五入 (5)计算并输出成绩绩点 (6)计算并输出成绩分档 程序中加注释:/* 注释内容 */,A命令独立程序(文件名ex2-1.C),#include main() long num; int sc;

12、char sex, sv;float score, pt;/*(1)*/scanf(“%ld %c %f“,/*(5)*/if (sc=90) pt=4.0;else if (sc=85) pt=3.7;else if (sc=82) pt=3.3;else if (sc=78) pt=3.0;else if (sc=75) pt=2.7;else if (sc=72) pt=2.3;else if (sc=68) pt=2.0;else if (sc=66) pt=1.7;else if (sc=64) pt=1.5;else if (sc=60) pt=1.0;else pt=0.0;pr

13、intf(“ %f“,pt);/*(6)*/switch (sc/10)case 10:case 9: sv=A; break;case 8: sv=B; break;case 7: sv=C; break;case 6: sv=D; break;default: sv=E;printf(“ %cn“,sv); ,运行示例与问题,输入 9234567 f 74.5 输出 9234567,Odd,Female 75 2.700000 C 问题 学号前应补0,满8位,09234567 绩点保留一位小数,2.7,显示上的优化处理,学号的显示,学号长度为8位 不足8位右对齐(左边补空格):%8ld 不

14、足8位左边补0:%08ld 不足8位左对齐(右边补空格):%-8ld 绩点的显示 保留一位小数:%.1f 总长4位(包括小数点),小数2位:%4.2f 修改程序,使输出格式符合要求 程序略(文件名ex2-1a.c),程序ex2-1相关知识,数据类型:long, int, float, char 格式符: %ld,%c,%f %8ld,%08ld,%.1f,%4.2f 运算符:(int)、(float)、&、|、! 表达式:奇偶,四舍五入,进制各位数 语句:if嵌套,switch,break 其它:程序注释,第二阶段的问题、相关知识与实现,关于命令行交互的实现 命令接收问题 总循环问题 命令分配

15、问题 退出命令 帮助命令 组装独立程序(文件名ex2-2.C) 命令处理的优化 优化程序(文件名ex2-2a.C),命令接收字符输入出函数,命令符:char cmd; 接收命令 scanf(“%c“,总循环问题循环的第3种结构,while语句 先判断条件 再执行循环体语句 书写格式 while (条件表达式) 循环体语句 ,循环体仅为一条语句时可省略,结束循环语句:break,3种循环:for,while,do-while 退出当前循环的语句:break 当前指的是包含break所在语句的最内层循环 break语句退出当前循环,即结束当前循环 用于在正常循环之外,对异常情况的特殊处理 表示不需

16、要再循环、可提前结束等含义,总循环的两种实现,do-while方法 do cmd=getchar(); while (cmd!=Q);,while方法 while ( 1 )/*无限循环*/ cmd=getchar();if (cmd=Q)break;/*结束循环*/ ,命令分配的两种方法,使用if-else-if语句 if (cmd=A) else if (cmd=H) else if () else,使用switch语句 switch( cmd ) case A: break;case H: break;default: ,关于A命令,参数按需求输入 long num; char sex;

17、 float score; scanf( “%ld %c %f“, 下一阶段再使用ex2-1a.c代替占位语句,关于H命令,使用多条printf语句,每条以n结尾 printf(“Student Program 1 Helpn“); printf(“ A: Analysisn“); printf(“ H:Helpn“); printf(“ Q:Quitn“); 使用一条printf语句,每行加双引号(扩展知识) printf(“Student Program 1 Helpn“ A: Analysisn“ H: Helpn“ Q: Quitn“ );,程序框架while结构,while ( 1

18、) printf( “ST1“ );cmd = getchar();if ( cmd=Q ) break;switch ( cmd )case A:scanf( “%ld %c %f“, ,完整程序,#include main() char cmd;long num; char sex; float score;while ( 1 )printf( “ST1“ );cmd = getchar();if ( cmd=Q )break;switch ( cmd )case A:scanf( “%ld %c %f“, ,ex2-2.c,运行示例,ST1h ST1ST1A 123 M 69.5 A:

19、123,M,69.500000 ST1ST1H Student Program 1 HelpA: AnalysisH: HelpQ: Quit ST1ST1x ST1ST1Q Good-Bye.,小写命令,不被接受 分析命令,提示符2遍占位信息,重复信息 显示帮助命令不能识别的命令 退出程序命令,完善与改进,提示符问题 处理上一命令后显示2遍,调试手段 无效命令问题 非正常命令应加“Bad Command”指示 小写命令问题 小写命令转换为大写命令 前导空格问题 过滤命令前的空格字符,程序调试界面跟踪与观察,常用调试工具跟踪与观察,Go运行 Restart重新启动 Stop 停止运行 Step

20、 Into 跟踪,进入函数,F11 Step Over 跟踪,跳过函数,F10,提示符问题程序调试,单步跟踪 计算机每执行一条语句后暂停 按单步跟踪按钮后继续下一步 观察变量 检查程序当前语句执行前各变量的值 原因分析 实际变量值与预期相比较,找出原因 改进程序 修改、保存、重新编译、再运行或调试,提示符问题原因与改进,原因:换行作为第二条命令理解 命令h理解为命令h和,共2条,故显示2遍提示符 改进:如果当前命令为回车本身,不做任何处理 否则,命令处理完成后,连续读入字符,直至换行读入换行字符 switch完成后加以下代码while ( cmd!=n )cmd = getchar(); 与

21、while (1) 构成两重循环,大小写问题与无效命令,判断小写 if ( cmd=a 无效命令问题 switch语句中增加 default: 语句 如果不是换行,则显示“无效命令”错误码,前导空格问题,过滤命令前的空格字符 如果读入命令为空格,则继续读入,直至出现非空格 原 “cmd = getchar();” 改为 do cmd = getchar(); while ( cmd= ); 与 while (1) 构成两重循环,优化程序,#include main() char cmd;long num;char sex;float score;while ( 1 )printf( “ST1“

22、 );do cmd = getchar(); while ( cmd= );if ( cmd=a ,ex2-2a.c,运行示例,ST1A 123 M 69.5 A: 123,M,69.500000 ST1h Student Program 1 HelpA: AnalysisH: HelpQ: Quit ST1xQ Bad Command ST1 q Good-Bye.,分析命令占位信息,重复信息 显示帮助命令,小写不能识别的命令显示错误命令 退出命令,小写含前导空格,程序ex2-2相关知识,语句嵌套、无限循环、多重循环 大小写字母 判断大小写、转换大小写 函数 getchar(); putch

23、ar();,集成与调试,程序ex2-1a.c与ex2-2a.c合并 程序框架,在ex2-2a.c基础上调整 变量定义时,增加sc,pt,sv定义 case A:/*去掉ex2-1a.c中原scanf与printf语句*/*放入ex2-1a.c代码*/break; ,程序集成(文件名ex2-3.c),#include main() char cmd,sex,sv;long num;int sc;float score,pt;while ( 1 )printf( “ST1“ );do cmd = getchar(); while ( cmd= );if ( cmd=a ,/*(5)*/if (sc

24、=90) pt=4.0;else if (sc=85) pt=3.7;else if (sc=82) pt=3.3;else if (sc=78) pt=3.0;else if (sc=75) pt=2.7;else if (sc=72) pt=2.3;else if (sc=68) pt=2.0;else if (sc=66) pt=1.7;else if (sc=64) pt=1.5;else if (sc=60) pt=1.0;else pt=0.0;printf(“ %.1f“,pt);/*(6)*/switch (sc/10)case 10:case 9: sv=A; break;c

25、ase 8: sv=B; break;case 7: sv=C; break;case 6: sv=D; break;default: sv=E;printf(“ %cn“,sv);break;case H:printf( “Student Program 1 Helpn“ );printf( “ A: Analysisn“ );printf( “ H: Helpn“ );printf( “ Q: Quitn“ );case n:break;default:printf( “Bad Commandn“ );while ( cmd!=n )cmd = getchar();printf( “Goo

26、d-Bye.n“ ); ,运行示例,ST1A 1234 m 66.5 00001234,Even,Male 67 1.7 D ST1h Student Program 1 HelpA: AnalysisH: HelpQ: Quit ST1xQ Bad Command ST1 q Good-Bye.,分析命令学号,奇偶,性别成绩,绩点,分档 显示帮助命令,小写不能识别的命令显示错误命令 退出命令,小写含前导空格,知识点回顾,数据类型:int, long, char, float 常量:整数、浮点数、字符、字符串 函数:scanf, printf, getchar, putchar 格式符:%d,

27、 %ld, %c, %f, %08ld, %.1f 转义符:n, t 运算符:赋值、算术、关系、逻辑、类型转换 =,+=,+-*/%,+,,= &,|,!,(int),(float) 控制语句:分支、循环、转向 if,if-else,if-else-if,switch for,while,do-while,break,应用回顾,表达式 整除判断、奇偶判断 取整(截去小数)、四舍五入、第几位四舍五入 各进制的“个”、“十”、“百”位等 大小写判断、大小写转换 算法 语句嵌套、无限循环、多重循环 命令行交互、消去前导(空格)、等待(回车)并继续 只要有一次与如果每次(素数问题) 操作:编辑、存盘、

28、编译、运行、调试,实验,命令行式的计算器程序,xxx4-3.c 数据类型为double,格式符%lg 提示符为“CLC!” 命令C,当前结果清零,显示0 命令N,设置当前结果,显示新结果 命令+,加运算,显示运算结果 当前值当前值Data,显示当前值 命令,同上 命令Q,退出,显示Good-Bye. 命令H,显示帮助信息,运行示例,CLC!N12.34 12.34 CLC! +56.78 69.12 CLC!-90.12 -21 CLC!*34.56 -725.76 CLC!/78.90 -9.19848 CLC!C 0,CLC! CLC!xyzH Bad Command CLC!Help Calculator HelpN: Set+: Add-: Sub*: Mul/: DivC: ClearH: HelpQ: Quit CLC!quit Good-Bye.,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报