- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言程序设计 北京工业大学计算机学院 软件学科部 廖湖声主讲 学时40(课堂24+上机16) 联系方式:liaohs@ 教案网址:/home/teachonline 上机时间:第2-8、10周7-8节 第5章 程序的组织结构(复习) 基本控制结构 变量说明、数据类型、表达式 if语句、while语句、for语句 算法初步 数据组织 ? 变量配置 流程图描述 ? 编码实现 数据组织结构 数组、字符串(字符数组) 程序的组织结构 函数(子算法描述) 参数传递、数组参数、返回值、递归调用 例5-1:团支部选举过程 从全班35名同学中,选出5名团支部委员 数据组织 每个同学得到的票数?学号、票数 得票最多的5人(可直接输出) 变量设置 long sno[35]; 35人的学号 int num[35]; 35人的得票数 用数组下标关联学号和得票数 算法 学号数组的初始化 重复处理35次 输入5个学号 累加5人的得票 按照得票数从多到少排序, 学号数组和得票数组同时排序 输出前5人的学号和得票数 程序组织 main 负责上述算法 void init( long sno[ ] ) 负责学号数组的初始化 void vote( long x, long sno[ ], int num[ ] ) 记录得票(x为侯选人的学号) void sort( lobg sno[ ], int num[ ] ) 根据得票数num,对sno数组、num数组排序 void output( long sno[ ], int num[ ] ) 输出选举结果 设计要点 所有数据通过参数传递,不用全局变量 程序实现 main( ) { long sno[35], int num[35] = { 0 }; int i, j; init( sno ); // 学号初始化 for( i=0; i35; i++ ) for( j=0; j5; j++ ) { long x; // 输入候选人学号 scanf( “%ld”, x ); vote( x, sno, num ); // 计票 } printf( “\n” ); } sort( sno, num ); // 排序 output( sno, num ); // 输出 } 函数实现(1/2) void init( long sno[ ] ) { int i; for( i=0; i35; i++ ) sno[i] = 60001 + i; } void vote( long x, long sno[ ], int num[ ] ) { int i; for( i=0; i35; i++ ) if( x == sno[ i ] ) { num[ i ] = num[ i ]+1; return; } } 函数实现(2/2) void sort( long sno[ ], int num[ ] ) { int i, j, n; long s; for( i=34; i0; i-- ) // 冒泡排序 for( j=0; ji; j++) { if( num[ j ] = num[ j+1 ] ) continue; n=num[j], num[j]=num[j+1], num[j+1]=n; s=sno[j], sno[j]=sno[j+1], sno[j+1]=s; } } // 元素交换 void output( long sno[ ], int num[ ] ) { int i; for( i=0; i5; i++ ) // 输出当选人 printf( “sno=%ld, num=%d\n”, sno[i], num[i] ); } 设计小结 数据组织 核心数据的组织 ? 学号数组、票数数组 满足:输入、计票、排序和输出的需求 程序组织 按照功能,分清核心算法过程和子过程 main函数?实现选举的主要步骤 各个函数?实现各自独立的子过程 子过程处理的局部化:所有数据来自参数 好处 易于理解、易于扩充、易于维护 核心技术:合理的数据组织、合理的程序组织 5.5 函数的递归调用 函数的嵌套调用 如:main( ) ? output( ) ? printf( ) 函数的递归调用 调用本身 应用需求 如:欧几里德算法(采用递归定义p146) 可以采用循环结构实现,但影响可读性 例5-2:Fibonacci数的计算 n if n 2 Fib( n ) = Fib( n-1 ) + Fib( n-2 ) 函数调用过程 程序
您可能关注的文档
- C语言程序设计(第二版)电子教案任正云 第6章 函数.ppt
- C语言程序设计(第二版)电子教案任正云 第7章数组.ppt
- C语言程序设计(第二版)电子教案任正云 第8章 指针.ppt
- C语言程序设计(第二版)电子教案任正云 第9章结构体和共用体.ppt
- C语言程序设计(第二版)电子教案任正云 第10章文件.ppt
- C语言程序设计(第二版)电子教案王伟 第1章.ppt
- C语言程序设计(第二版)电子教案王伟 第2章.ppt
- C语言程序设计(第二版)电子教案王伟 第3章.ppt
- C语言程序设计(第二版)电子教案王伟 第4章.ppt
- C语言程序设计(第二版)电子教案王伟 第5章.ppt
- C语言程序设计案例教程 第2版 教学课件 作者 廖湖生 叶乃文 周珺 计算机基础知识.ppt
- C语言程序设计案例教程 第2版 教学课件 作者 廖湖生 叶乃文 周珺 结构化实例7.ppt
- C语言程序设计案例教程 第2版 教学课件 作者 廖湖生 叶乃文 周珺 结构体6.1.ppt
- C语言程序设计案例教程 第2版 教学课件 作者 廖湖生 叶乃文 周珺 控制.ppt
- C语言程序设计案例教程 第2版 教学课件 作者 廖湖生 叶乃文 周珺 算法初步.ppt
- C语言程序设计案例教程 第2版 教学课件 作者 廖湖生 叶乃文 周珺 文件6.3.ppt
- C语言程序设计案例教程 第2版 教学课件 作者 廖湖生 叶乃文 周珺 指针6.2.ppt
- C语言程序设计案例教程 高职计算机大类专业 熊锡义 第3章 数据类型及表达式.ppt
- C语言程序设计案例教程 高职计算机大类专业 熊锡义 第4章 结构化程序设计.ppt
- C语言程序设计案例教程 高职计算机大类专业 熊锡义 第5章 数组.ppt
文档评论(0)