版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 利用数组处理批量数据,6,8,9章讲数据注重MEM,相对于第三章的“单独”的简单数据类型,更关注“组合”、更关注“数据块”、 “内存块,目标与知识点,熟练掌握一维数组 一维数组的定义 一维数组的引用 一维数组的初始化 掌握二维数组 二维数组的定义 二维数组的引用 二维数组的初始化,了解多维数组 掌握字符数组 字符数组的定义 字符数组的引用 字符数组的初始化,复习回顾,第三章,有了常量,为什么还要变量? 给“量”一个“名份”,使我们可以方便地访问它、改写它、控制它 第七章,有了三种逻辑控制结构,为什么还要函数? 给“逻辑控制”一个“名份”,使我们可以方便地访问它、组织它、利用它 今天我们
2、讲:有了变量,为什么还要数组? 同样的原因,给“一组变量”一个更细的“名份”,使我们可以更方便地访问它 冯诺依曼计算机是基于存储结构的,“名份”是和存储地址相关的,地址是与“内存”相关的概念。 内存是程序员的“战场” ,打仗要懂得地图,为什么要用数组,cs_c,问题: 1.如何用c语言把100个同学的成绩存储到计算机中? 2.如何从这100个学生的成绩中查找最大值和最小值,int score1; int score2; int core100,计算机中的,我们看到的,按照以前的知识,我们会这样做,为什么要用数组,cs_c,此类问题的特点: 1.在一个表中,具有共同的表名; 2.他们的学号是相邻
3、的,从1到100; 3.根据学号就能区别开不同的成绩; 4.数据类型相同,看到同类性质的数据,同类性质的操作,我们自然而然想到用循环来处理问题 自然而然想到:如果有一种变量是和一个序号相关的 ,那将会产生很多很神奇的代码 抽象!把分立的数据抽象成一个内部有序的整体,cs_c,int score1; int score2; int core100,for (i=1;i=100;i+) 变量名,循环控制变量,一维数组的定义,一维数组定义的一般形式,类型符 数组名常量表达式,int cs_c100,cs_c99,cs_c2,cs_c1,cs_c0,数组元素的表示,69,82,85,93,计算机里的,
4、一维数组的引用,int cs_c100,for (i=1;i=100;i+) cs_ci,include void main() int i, cs_c100; printf(input scores: n); for(i = 0; i 100; i+) scanf(%d,问题1:如何用c语言把100个同学的成绩存储 到计算机中,82,69,93,85,再把它们打印出来,include void main() int cs_c100; printf(input scores: n); for(int i = 0; i 100; i+) scanf(%d,include int i, iMax,
5、 iMin, cs_c100; printf(input 100 scores: n); for(i = 0; i iMax) iMax = cs_ci; if(cs_ci iMin) iMin = cs_ci; printf(iMax=%dn iMin=%dn,iMax,iMin);,82,93,69,0,73,iMax=cs_c0,iMin=cs_c 0,82,82,82,82,处理两者复杂些: 问题2:如何从这100个学生成绩中查找最大值和最小值,include int i, iMax, iMin, cs_c100; printf(input 100 scores: n); for(i
6、= 0; i iMax) iMax = cs_ci; if(cs_ci iMin) iMin = cs_ci; printf(iMax=%dn iMin=%dn,iMax,iMin);,82,93,69,0,73,iMax=82,iMin=82,cs_c0=82,iMax=82,iMin=82,82,82,0,include int i, iMax, iMin, cs_c100; printf(input 100 scores: n); for(i = 0; i iMax) iMax = cs_ci; if(cs_ci iMin) iMin = cs_ci; printf(Max=%dn Mi
7、n=%dn,iMax,iMin);,82,93,69,0,73,iMax=93,iMin=0,cs_c99=73,iMax=93,iMin=0,93,0,99,Input 100 scores: 82 93 69 0 73 max=93 min=0,100,作用,引入数组,加强了我们处理(内存中的)数据的能力,“增加了计算机的功能”。 计算机是工具,我们学习计算机是为了“掌握它的功能” 这种数据相对我们以前讲的数据,区别在于它们是“数据块”,而非简单、独立的,在定义数组的同时,给各数组元素赋值 int a10=0,1,2,3,4,5,6,7,8,9; int a10=0,1,2,3,4;相当于
8、 int a10=0,1,2,3,4,0,0,0,0,0; int a10=0,0,0,0,0,0,0,0,0,0;相当于 int a10=0; int a5=1,2,3,4,5;可写为 int a =1,2,3,4,5,一维数组的初始化,易出现的问题,1. 定义时易出现的问题,类型符 数组名常量表达式,常量表达式:表示数组元素的个数。可以是整型常量或符号常量,不允许使用变量,例如: int a5; (下标是整型常量) int a2*3 (下标是整型表达式,define M 6 void main() int aM; .,下标是符号常量,易出现的问题,2. 引用时易出现的问题,元素的表示: 数
9、组名 下标,数组要先定义后引用,定义数组时,内要使用常量表达式;不能使用变量;引用数组元素时,内的整型表达式可以是已经赋值的整型变量,下标都是从零开始,都不能越界,int i=0,a10; a6; a10; ai,说明,如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非常量表达式。如: void func (int n) int a2*n; /合法,n的值从实参传来 如果指定数组为静态(static)存储方式,则不能用“可变长数组”。如: static int a2*n; /不合法,a数组指定为static,易出现的问题,3. 初始化时,对所有元素赋初值,可以不指定数组的长度,
10、例如: int class5=20,30,40,50,60; 省略数组长度 int class =20,30,40,50,60,两种方式赋值后,数组元素的值分别是: class0=20, class1=30, class2=40, class3=50, class4=60,对数组中部分元素赋初值,数组长度不能省略,易出现的问题,3. 初始化时,对数组中部分元素赋初值,数组长度不能省略。 对所有元素赋初值,可以不指定数组的长度,例如:(未赋值的部分元素自动设为0) int class5=20,30,40 ; 省略数组长度 int class =20,30,40; /花括号中有3个数,确定a数组有
11、3个元素,两种方式赋值后,数组元素的值分别是: class0=20, class1=30, class2=40, class3=0, class4=0,下面程序的输出结果是_。 main() int a=1,8,2,8,3,8,4,8,5,8; printf(%d,%dn,a4+3,a4+3); A) 6,6 B)8,8 C) 6,8 D)8,6,一些材料来自其他同行,在此感谢,B,int main() int p8=11,12,13,14,15,16,17,18, i=0,j=0; while(i+7) if(pi%2) j+=pi; printf(%dn,j); 程序运行后的输出结果是_。
12、 A)42 B)45 C)56 D)60,一些材料来自其他同行,在此感谢,B,程序举例 1,一些材料来自其他同行,在此感谢,查找,排序,插入,程序举例,查找某个数在一个一维数组(长度为5)中的位置,题目,include int i, a5, iNumber; printf(请输入要查找的数字:); scanf(%d,查找算法的实现,4,3,67,56,90,56,a0 = iNumber,56,4,不相等,include int i, a5, iNumber; printf(请输入要查找的数字:); scanf(%d,4,3,67,56,90,56,a1 = iNumber,56,3,不相等,
13、查找算法的实现,include int i, a5, iNumber; printf(请输入要查找的数字:); scanf(%d,4,3,67,56,90,56,a2 = iNumber,56,67,不相等,查找算法的实现,include int i, a5, iNumber; printf(请输入要查找的数字:); scanf(%d,4,3,67,56,90,56,a3 = iNumber,56,56,相等,i = 3) 5,在数组的第4个位置找到了数字56,查找算法的实现,用冒泡法对任意输入的5个数字按照从小到大的顺序排序输出,题目,排序算法的实现,程序举例 2,查找,排序,插入,程序举例
14、,用冒泡法对任意输入的5个数字按照从小到大的顺序排序输出,题目,include int i, j, k, a5; printf(请任意输入5个整数:); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(输出排序后的整数: ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,排序算法的实现,i = 0,j = 0,78,23,a0,a1,a2,a3,a4,6,10,48,include int i, j, k, a5; printf(请任意输入5个整数:); for(i = 0;
15、 i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(输出排序后的整数: ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 0,j = 1,a0,a1,a2,a3,a4,78,23,6,10,48,排序算法的实现,include int i, j, k, a5; printf(请任意输入5个整数:); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(输出排序后的整数: ); for(i = 0; i 5; i+) print
16、f(%d ,ai); printf(n);,i = 0,j = 2,6,23,a0,a1,a2,a3,a4,78,10,48,排序算法的实现,include int i, j, k, a5; printf(请任意输入5个整数:); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(输出排序后的整数: ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 0,j = 3,6,23,a0,a1,a2,a3,a4,78,48,10,排序算法的实现,include int i, j
17、, k, a5; printf(请任意输入5个整数:); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(输出排序后的整数: ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 1,j = 0,48,a0,a1,a2,a3,a4,23,6,10,78,排序算法的实现,include int i, j, k, a5; printf(请任意输入5个整数:); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf
18、(输出排序后的整数: ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 1,j = 1,48,a0,a1,a2,a3,a4,23,6,10,78,排序算法的实现,include int i, j, k, a5; printf(请任意输入5个整数:); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(输出排序后的整数: ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 1,j = 2,a0,a1,a2,a3,a4
19、,23,48,78,10,6,排序算法的实现,include int i, j, k, a5; printf(请任意输入5个整数:); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(输出排序后的整数: ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 2,j = 0,10,6,a0,a1,a2,a3,a4,23,48,78,排序算法的实现,include int i, j, k, a5; printf(请任意输入5个整数:); for(i = 0; i aj+1)
20、k = aj; aj = aj + 1; aj + 1 = k; printf(输出排序后的整数: ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 2,j = 1,10,6,a0,a1,a2,a3,a4,23,48,78,排序算法的实现,include int i, j, k, a5; printf(请任意输入5个整数:); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(输出排序后的整数: ); for(i = 0; i 5; i+) printf(%d ,ai)
21、; printf(n);,i = 3,j = 0,10,6,a0,a1,a2,a3,a4,23,48,78,请任意输入5个整数:23 78 6 10 48 输出排序后的整数:6 10 23 48 78,排序算法的实现,题目,程序举例 3,查找,排序,插入,程序举例,向一个数组按从小到大的顺序输入5个数,再将另外一个数字插入到这个数组中,使得插入后的数组元素依然保持有序,题目,define N 5 int i, j, aN + 1, x; printf(请从小到大输入5个整数:); for(i = 0; i x) break; for(j = N; j i; j-) aj = aj - 1; a
22、i = x; printf(n 插入后的数组元素:n); for(i = 0; i N + 1; i+) printf(%d ,ai); printf(n,插入算法的实现,五个整数存放到数组中,查找第一个大于要插入数的位置,将要插入的数保存到该位置,问题: 1.如何用c语言把这个矩阵存储到计算机中? 2.如何用c语言实现该矩阵的转置,2 3 4 5 6,a,为什么要用二维数组,int a1; int a2; int a3; int a4; int a5; int a6,1 2 3 4 5 6,为什么要用二维数组,int a3=1,2,3,int b3=4,5,6,1 2 3 4 5 6,为什么
23、要用二维数组,特点: 1.多个值,一个矩阵名; 2.行列按顺序排列; 3.根据行列号就能区别开不同的值; 4.数据类型相同,2 3 4 5 6,a,为什么要用二维数组,二维数组的定义,二维数组定义的一般形式,类型符 数组名常量表达式常量表达式,int a23,a01,a02,a10,a11,a12,a00,a01,a00,a02,a10,a11,a12,二维数组的引用,计算机中的,第1列 第2列 第3列,第1行 第2行,二维数组元素的存放顺序:按行序优先,二维数组元素的表示形式为: 数组名下标下标,int a34=1,2,3,4,5,6,7,8,9,10,11,12; int a34=1,2,
24、3,4,5,6,7,8,9,10,11,12; int a34=1,5,9;等价于 int a34=1,0,0,0,5,0,0,0, 9,0,0,0; int a34=1,5,6;相当于 int a34=1,5,6,0; int a34=1,2,3,4,5,6,7,8,9,10,11,12;等价于 int a 4=1,2,3,4,5,6,7,8,9,10,11,12; int a 4=0,0,3, ,0,10;合法,二维数组的初始化,include void main() int i, j, a23; printf(input array: n); for(i = 0; i 2; i+) fo
25、r(j = 0; j3; i+) scanf(%d,问题1:如何用c语言把这个矩阵存储到计算机中,1 2 3 4 5 6,main( ) int a23=1,2,3,4,5,6; int b32,i,j; printf(“array a:n”); for (i=0;i=1;i+) for(j=0;j=2,j+) printf(“%5d”,aij); bji=aij; printf(“n”); printf(“array b:n”); for (i=0;i=2;i+) for (j=0;j=1;j+) printf(“%5d”,bij); printf(“n”);,1 2 3 45 6,0 0,
26、1,问题2:如何用c语言实现该矩阵的转置,main( ) int a23=1,2,3,4,5,6; int b32,i,j; printf(“array a:n”); for (i=0;i=1;i+) for(j=0;j=2,j+) printf(“%5d”,aij); bji=aij; printf(“n”); printf(“array b:n”); for (i=0;i=2;i+) for (j=0;j=1;j+) printf(“%5d”,bij); printf(“n”);,1 2 3 45 6,0 0,1,问题2:如何用c语言实现该矩阵的转置,4,1 2 3 45 6,0 0,1,问题2:如何用c语言实现该矩阵的转置,4 2 5 3 6,array a: 1 2 3 4 5 6,array b: 1 4 2 5 3 6,易出现的问题,1. 定义时易出现的问题,类型符 数组名常量表达式常量表达式,常量表达式:表示数组元素的个数,不允许使用变量,例如: int a56; int aij,易出现的问题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四塔吊设备购置与销售专项合同范本3篇
- 二零二四年家电销售顾问聘用与售后服务合同3篇
- 二零二五版出租车承包合同绿色出行推广合作2篇
- 二零二五版豪华度假酒店承包经营合同规范范本3篇
- 二零二五版公益劳动服务基地共建与社区公共服务拓展合同3篇
- 年度营养型输液竞争策略分析报告
- 年度智能儿童成长仪市场分析及竞争策略分析报告
- 2024年钢材交易:居间代理全套合同
- 二零二五版水利工程承包居间代理服务合同2篇
- 2025年变压器智能化升级采购及技术支持合同3篇
- 安徽省合肥市包河区2023-2024学年九年级上学期期末化学试题
- 《酸碱罐区设计规范》编制说明
- PMC主管年终总结报告
- 售楼部保安管理培训
- 仓储培训课件模板
- 2025届高考地理一轮复习第七讲水循环与洋流自主练含解析
- GB/T 44914-2024和田玉分级
- 2024年度企业入驻跨境电商孵化基地合作协议3篇
- 《形势与政策》课程标准
- 2023年海南省公务员录用考试《行测》真题卷及答案解析
- 桥梁监测监控实施方案
评论
0/150
提交评论