C语言程序设计 课件 第9章-进阶内容.pptx

C语言程序设计 课件 第9章-进阶内容.pptx

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

;理解C语言共用体、枚举、位运算、复杂函数递归、编译预处理等概念方法

了解使用命令执行参数和回调函数的一般步骤

使用递归函数和指针处理复杂问题

使用特殊编程技术的能力;9.1.1共用体;【例9-1】几所学校要联合统计学生的成绩,但是一个问题难住了统计人员,不同学校相同的课程计分方式不一样,有的学校使用百分制,有的学校使用五级制,如何设计数据的存储结构才能正确数据保存呢?

本应用中,五级制和百分制成绩二选一,所以使用共用体来存储

共用体字段在使用中需要使用一个标记来确定使用的是哪个字段

本例中,五级制和百分制需要根据情况分别讨论;共用体示例;intReadStuScore(structStuScore*s){

intflagInputError=1;

charc;

scanf(%s%d%c,s-name,s-id,s-flag);

switch(s-flag) {

casem: caseM:

printf(请输入百分制成绩:);

scanf(%d,s-score.mark);

return1;

caseg:caseG:

printf(请选择五分制成绩:A.优秀;B.良好;C.中等;D.及格;E.不及格:);

/*while语句将输入缓冲区数据清空,保证后续正确读入字符*/

while((c=getchar())!=\nc!=EOF);

scanf(%c,c);

switch(c) {

caseA:casea:strcpy(s-score.grade,Distinction);break;

caseB:caseb:strcpy(s-score.grade,Merit);break;

caseC:casec:strcpy(s-score.grade,Medium);break;

caseD:cased:strcpy(s-score.grade,Passed);break;

caseE:casee:strcpy(s-score.grade,Failed);break;

default:flagInputError=0;break;

}

break;

default:flagInputError=0;break;

}

if(flagInputError==0)

printf(输入成绩有误,请重新输入这条数据!\n);

returnflagInputError;

};共用体示例;;;共用体空间占用分析;9.1.2枚举;【例9-3】几所学校要联合统计学生成绩,不同学校相同的课程计分方式不一样,有的使用的是百分制,而有的使用的却是五级制,如何对成绩进行平均分的统计呢?

分析:

使用枚举确定五级制转换为百分制成绩;;??例9-4】微信某一个版本发布后,用户发现多了一个状态设置功能,大家纷纷玩起了状态设置,但是有个缺点,同一时刻只能有一个状态。现在假设由你来设计这个状态参数,允许用户同时设置多个状态,该如何实现呢?

分析:

使用枚举类型定义每个状态

;;;9.2.1位运算;【例9-5】使用二进制记录例9-4微信状态,通过二进制运算实现个状态的设置。

分析:

状态只有0,1两个值,可以使用一位二进制数表示,

;voiddisplay(intstatus)

{

intset[32]={1,2,4,8,16,32,64,128,256,512,1024,2048};

intc,i;

for(i=0;i12;i++)

{

c=statusset[i];

switch(c)

{

case1:printf(等天晴\t);break;

case2:printf(发呆\t);break;

case4:printf(疲惫\t);break;

case8:printf(美滋滋\t);break;

case16:printf(胡思乱想\t);break;

case32:printf(裂开\t);break;

case64:printf(冲\t);break;

case128:printf(求锦鲤\t);break;

case256:printf(emo\t);break;

c

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档