




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章利用数组处理批量数据一、数组的基本概念二、一维数组三、二维数组四、字符数组主要内容一、数组的基本概念 数组是一种构造数据类型。 数组是有序数据的集合。 数组中的每一个元素都属于同一数据类型。 用一个统一的数组名和下标唯一地确定数组中的元素。二、一维数组一维数组的定义格式类型说明符 数组名常量表达式举例int a10;说明1. 数组名的命名规则应遵循标识符的命名规则。2. 数组名后是方括号,而非圆括号。3. 常量表达式表示元素的个数,即数组长度。a0, a1, a2, a3, a4, a5, a6, a7, a8, a94. 常量表达式中可以包含常量和符号常量,不能包含变量。#define
2、 n 10int main()int an, bn+10,C2+3;从a0开始,没有a10.标识符只能由字母、数字、下划线组成。且第一个字符 必须为字母或下划线。整型表达式,表达式中可以使用符号常量。二、一维数组一维数组元素的引用格式数组名下标说明1. 数组必须先定义,后使用。2. 数组元素只能逐个引用,而不能一次引用整个数组。 数组元素的引用与同类型的一般变量使用方式一样。int a10;a0=10; a2=a0*5;scanf(“%d”,&a5); printf(“%d”,a5);int i,a10;for (i=0; i=0; i-) printf(“%2d”,ai);3. 当逐个使用数
3、组中的每一个元素时,通常借助for循环语句。9 8 7 6 5 4 3 2 1 0 数组作为函数的参数时传递的是首地址。二、一维数组一维数组的初始化说明1. 定义数组时,对数组元素赋初值。2. 可以只给一部分数组元素赋初值。3. 要想使数组中全部元素数据为0,则采用如下形式。int a10=0,1,2,3,4,5,6,7,8,9;int a10=0,1,2,3,4;其它?int a10=0,0,0,0,0,0,0,0,0,0;4. 在对全部数组元素赋初值时,可以不指定数组长度。int a =0,1,2,3,4;上机时可以使用:int a10=0; 一维数组程序举例例6-1求Fibonacci数
4、列的前20个数。例6-2用冒泡法对10个数排序。(由大到小)int main( ) int green,blue,red,a10,temp; for (green=0;green=9;green+) agreen=int(rand()/600);printf(%d,agreen); printf(n); for(red=0;red=red-1;green-) if(agreenagreen+1) temp=agreen;agreen=agreen+1;agreen+1=temp; for (green=0;green=9;green+)printf( %d ,agreen); printf(n
5、); return 0;给10个数组元素赋随机数并打印,rand()函数的作用是产生-90到32767之间的随机整数。对10个数组元素排序.输出排序后的10个数组元素.一维数组程序举例例6-3对冒泡法排序程序的改进。问题:对30个数排序?对60个数排序列?对部分数据排序列?找出共性int green,blue,red,a10,temp,bp,ep;bp=0;ep=9;for(red=bp;red=red-1;green-) if(agreenagreen+1) temp=agreen; agreen=agreen+1; agreen+1=temp;for (green=bp;green=ep;
6、green+)printf( %d ,agreen); printf(n);分析:只要确定需要排序数据的开始位置(bp)和终止位置(ep),将循环控制变量的初值和终值用它们代替即可。对不同的排序对象只需修改bp和ep的值即可(在编程序时还应该考虑数组的大小,be和ep也可以用符号常量)。这样的改进对今后是非常重要的。一维数组程序举例例6-4用选择法对10个数进行排序。(由大到小)for (green=0;green=8;green+) red=green; for (blue=green+1;blue=9;blue+) if (ared ablue) red=blue; if(red!=gre
7、en) temp=agreen; agreen=ared; ared=temp; 指定当前最大数应该放置的位置green。.查找当前最大数的位置red。将当前最大数(red标识)放到指定位置(用green标识)三、二维数组二维数组的定义格式类型说明符 数组名常量表达式1 常量表达式2举例float a23, b45;说明1. 二维数组中元素的排列顺序是:先行后列。 因此,可以把二维数组看成是一个矩阵。2. 二维数组元素仍然是从a00开始。a00, a01, a02 a10, a11, a12 二维数组元素的引用格式数组名下标1 下标2说明1. 数组必须先定义,后使用。2. 数组元素只能逐个引用
8、,而不能一次引用整个数组。 数组元素的引用与同类型的一般变量使用方式一样。int a23;a01=10; a02=a01*5;scanf(“%d”,&a11); printf(“%d”,a11);int i,j;float a45;for (i=0; i=3; i+) for (j=0; j=4; j+) scanf(“%d”,aij);3. 二维数组输入/输出的一般格式。float a56;for (i=1; i=4; i+) for (j=1; j=5; j+) scanf(“%d”,aij);int i,j;float a45;for (i=0; i=3; i+) for (j=0; j
9、=4; j+) printf(“%d”,aij); printf”n”);float a56;for (i=1; i=4; i+) for (j=1; j=5; j+) printf(“%d”,aij); printf(“n”);二维数组的初始化说明1. 分行给二维数组赋初值。2. 按数组的排列顺序对各数组元素赋初值。3. 可以对部分元素赋初值。int a23=1,2,3,4,5,6;int b23=1,2,3,4,5,6;int c34=1,5,9;4. 在对全部数组元素赋初值时,数组第一维的长度可以不指定。int e 3=1,2,3,4,5,6;int d34=1,5,6,0,9,7;in
10、t f 4=0,0,3,0,0,10;1 2 34 5 6 1 2 34 5 6 1 0 0 0 5 0 0 09 0 0 0 1 0 0 0 5 6 0 0 0 9 7 0 1 2 34 5 6 0 0 3 0 0 0 0 0 0 10 0 0 二维数组程序举例例6-5将一个二维数组元素的行和列元素互换,存在另一个二维数组中。例6-6有一个3*4矩阵,输出最大元素的值,及其所在的行号和列号。int main()int i,j,max,row=0,colum=0; int a34=1,2,3,4,9,8,7,6,-10,10,-5,2; max=a00; for (i=0;i=2;i+) fo
11、r (j=0;jmax) max=aij; row=i; colum=j; printf(“max=%d,row=%d,colum=%dn”,max, row, colum); return 0;程序运行结果 : max=10,row=2,colum=1幻方的算法魔方阵的排列规律如下:(魔方阵应为奇数方阵)(1)将1放在第一行的中间列;(2)从2开始直到n2止各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数加1;(3)如果上一个数的行数为1时,下一个数的行数应为n(即最后一行)。例如,1的行数为1,则2的行数应该放在最后一行,为n。列数加1;(4)当上一个数的列数为最后一列n
12、时,下一个数的列数应为1,行数仍然减1。(5)如果按上面的规则确定的位置已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。按此方法,即可得到任何阶的方阵。二维数组程序举例例6-6有一个3*4矩阵,输出最大元素的值,及其所在的行号和列号。int main()int i,j,max,row=0,colum=0; int a34=1,2,3,4,9,8,7,6,-10,10,-5,2; max=a00; for (i=0;i=2;i+) for (j=0;jmax) max=aij; row=i; colum=j; printf(“max=%d,row=%d,colum=%dn”,
13、max, row, colum); return 0;程序运行结果 : max=10,row=2,colum=1四、字符数组(一)字符数组(二)字符串(一)字符数组定义初始化char c5=h,a,p,p,y;引用int main()char c5=h,a,p,p,y; int i; for (i=0;i字符串2,则函数值为一个正整数;如果字符串1字符串2,则函数值为一个负整数。strlen函数测字符串长度的函数strlen(字符数组)测字符串长度的函数。函数的值为字符串中的实际长度(不包括0 在内)。strlwr函数转换为小写的函数strlwr(字符串)作用是将字符串中大写字母换成小写字母。
14、strupr函数转换为大写的函数strupr(字符串)作用是将字符串中小写字母换成大写字母。(二)字符串举例例1输入5个字符串,输出其中长度最大者。#include int main()char string20; char str520; int i; for (i=0;i5;i+) gets(stri); strcpy(string,str0); for (i=1;istrlen(string) strcpy(string,stri); printf(the largest string is :%sn,string); return 0;RussaFranceAmericaKreaChi
15、naThe largest string is:America题1输入10个数,输出最大值、最小值以及平均值(用数组实现)。练习题题2用冒泡法对10个数排序。(由小到大)题3打印如下杨辉三角形。(要求打印出10行)11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 .题4输入4名学生的姓名及三门课成绩,打印学生成绩表。(姓名、三门课成绩、平均分)如何按平均分将学生成绩排序?答案题4输入4名学生的姓名及三门课成绩,打印学生成绩表。(姓名、三门课成绩、平均分)main()int i,j; char str510; float score54,ave5,sum; for (
16、i=1;i=4;i+) printf(input the name of number %d:,i); scanf(%s,stri); printf(input the scores of number%d:,i); scanf(%f%f%f,&scorei1,&scorei2,&scorei3); for (i=1;i=4;i+) sum=0; for (j=1;j=3;j+) sum=sum+scoreij; avei=sum/3; printf(n *the table of score*n); printf(-n); printf(name math eng com aven); pr
17、intf(-n); for (i=1;i=4;i+) printf(%-5s,stri); for (j=1;j=3;j+) printf(%6.1f,scoreij); printf(%6.1fn,avei); printf(-n);输入4名学生的姓名及三门课成绩。求4名学生的平均分。按一定的格式输出4名学生的姓名、成绩、平均分。答案main()char str510; float score54,ave5; void input(float score54,char str510); void average(float score54,float ave5); void output(f
18、loat score54,char str510,float ave5); input(score,str); average(score,ave); output(score,str,ave); void input(float score54,char str510)int i; for (i=1;i=4;i+) printf(input the name of number %d:,i); scanf(%s,stri); printf(input the scores of number%d:,i); scanf(%f%f%f,&scorei1,&scorei2,&scorei3); void average(float score54,float ave5)int i,j; float sum; for (i=1;i=4;i+) sum=0; for (j=1;j=3;j+) sum=sum+scoreij; avei=sum/3; void output(float score54,cha
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度法律服务团队聘用合同范本下载
- 2025年度音乐喷泉与音响系统集成项目合同
- 知识产权教育实践活动计划
- 科技创新应用推广工作方案计划
- 学期后勤保障与支持计划
- 2025年物位仪合作协议书
- 培养小学生的公民道德责任计划
- 制定年度客户满意度提升计划
- 如何构建长效的职业发展体系计划
- 校园美术文化建设方案计划
- 运动会活动流程中的医疗安全保障措施
- 第十章皮肤软组织扩张术医学美容教研室袁晓野讲解
- 2025年冷链物流产品配送及仓储管理承包合同3篇
- 电镀产业园项目可行性研究报告(专业经典案例)
- 2025年鲁泰集团招聘170人高频重点提升(共500题)附带答案详解
- 2024-2025学年成都高新区七上数学期末考试试卷【含答案】
- 浙教版2023小学信息技术六年级上册《人机对话的实现》说课稿及反思
- 企业员工食堂管理制度框架
- 2025年山东出版集团有限公司招聘笔试参考题库含答案解析
- 【开题报告】中小学校铸牢中华民族共同体意识教育研究
- 2022+ADA/EASD共识报告:2型糖尿病高血糖的管理
评论
0/150
提交评论