高等教育利用数组处理批量数据.pptx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高等教育 利用 数组 处理 批量 数据
- 资源描述:
-
问题:问题:给一组数排序,这组给一组数排序,这组 数该数该 如何存放呢如何存放呢?这些数据如何存放才便于排序82945637617188888888881111111111111118 8 88888888这便是本章所要解决的问题l l 本章要点掌握一维、二维数组的定义和引用掌握一维、二维数组的定义和引用方法、存储结构和初始化方法。方法、存储结构和初始化方法。掌握有关一维数组的有关算法掌握有关一维数组的有关算法掌握数组的运算。掌握数组的运算。l l 主要内容主要内容6.1 6.1 怎样定义和引用一维数组怎样定义和引用一维数组6.2 6.2 怎样定义和引用二维数组怎样定义和引用二维数组6.3 6.3 字符数组字符数组数组的概念数组的概念:C语言为这些数据,提供了一种构造数据类型:数组。语言为这些数据,提供了一种构造数据类型:数组。所谓数组所谓数组就是一组具有相同数据类型的数据的有序集合。就是一组具有相同数据类型的数据的有序集合。由数组名和下标唯一确定数组中的一个元素,由数组名和下标唯一确定数组中的一个元素,由数组名和下标唯一确定数组中的一个元素,由数组名和下标唯一确定数组中的一个元素,数组中的每数组中的每一个元素都属于一个元素都属于同一个数据类型同一个数据类型。按数组元素的类型不同,数组又可分为按数组元素的类型不同,数组又可分为按数组元素的类型不同,数组又可分为按数组元素的类型不同,数组又可分为数值数组、字符数数值数组、字符数数值数组、字符数数值数组、字符数组、指针数组、结构数组组、指针数组、结构数组组、指针数组、结构数组组、指针数组、结构数组等。等。等。等。一个班学生的学习成绩一个班学生的学习成绩一行文字一行文字一个矩阵一个矩阵这些数据的特点是:这些数据的特点是:1 1、具有相同的数据类型、具有相同的数据类型2 2、使用过程中需要保留原始数据、使用过程中需要保留原始数据如果有如果有10001000名学生名学生,每个学生有每个学生有一个成绩,需要求这一个成绩,需要求这10001000名学生名学生的平均成绩。的平均成绩。用用s s1 1,s,s2 2,s,s3 3,s,s10001000表示每个学表示每个学生的成绩,能体现生的成绩,能体现内在联系内在联系。C C语言用方括号中的数字表示下语言用方括号中的数字表示下标,如用标,如用s15s15表示表示。6.1 6.1 怎样定义和引用一维数组怎样定义和引用一维数组6.1.1 6.1.1 怎样定义一维数组怎样定义一维数组6.1.2 6.1.2 怎样引用一维数组元素怎样引用一维数组元素6.1.3 6.1.3 一维数组的初始化一维数组的初始化6.1.4 6.1.4 一维数组程序举例一维数组程序举例6.1.1 6.1.1 怎样定义一维数组怎样定义一维数组一维数组是数组中最简单的一维数组是数组中最简单的它的元素只需要用数组名加一个下它的元素只需要用数组名加一个下标,就能惟一确定标,就能惟一确定要使用数组,必须在程序中先定义要使用数组,必须在程序中先定义数组数组定义一维数组的一般形式为:定义一维数组的一般形式为:类型符类型符 数组名数组名 常量表达式常量表达式;数组名的命名规则和变量名相同数组名的命名规则和变量名相同如如 int a10;int a10;数组名数组名6.1.1 6.1.1 怎样定义一维数组怎样定义一维数组定义一维数组的一般形式为:定义一维数组的一般形式为:类型符类型符 数组名数组名 常量表达式常量表达式;数组名的命名规则和变量名相同数组名的命名规则和变量名相同如如 int a10;int a10;数组数组长度长度6.1.1 6.1.1 怎样定义一维数组怎样定义一维数组定义一维数组的一般形式为:定义一维数组的一般形式为:类型符类型符 数组名数组名 常量表达式常量表达式;数组名的命名规则和变量名相同数组名的命名规则和变量名相同如如 int a10;int a10;1010个元素个元素:a0,a1,a2,a0,a1,a2,a9,a9a0 a1 a2 a3 a7 a8 a96.1.1 6.1.1 怎样定义一维数组怎样定义一维数组定义一维数组的一般形式为:定义一维数组的一般形式为:类型符类型符 数组名数组名 常量表达式常量表达式;int a4+6;int a4+6;合法合法int n=10;int n=10;int an;int an;6.1.1 6.1.1 怎样定义一维数组怎样定义一维数组说明:说明:(1)(1)数组名定名规则和变量名相同,遵循标识符定名规数组名定名规则和变量名相同,遵循标识符定名规则。则。(2)(2)在定义数组时,需要指定数组中元素的个数,方括在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表示元素的个数,即数组长弧中的常量表达式用来表示元素的个数,即数组长度。度。(3)(3)常量表达式中可以包括常量和符号常量,但不能包常量表达式中可以包括常量和符号常量,但不能包含变量。也就是说,含变量。也就是说,C C语言不允许对数组的大小作语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中动态定义,即数组的大小不依赖于程序运行过程中变量的值。变量的值。例如:例如:int n;int n;scanf(scanf(“%d%d,&n);&n);/*/*在程序中临时输入在程序中临时输入数数 组的大小组的大小*/int a int an n;数组说明中其他常见的错误:数组说明中其他常见的错误:数组说明中其他常见的错误:数组说明中其他常见的错误:float a0;float a0;/*/*数组大小为数组大小为0 0没有意义没有意义*/int b(2)(3);int b(2)(3);/*/*不能使用圆括号不能使用圆括号*/int k,ak;int k,ak;/*/*不能用变量说明数组大小不能用变量说明数组大小*/6.1.2 6.1.2 怎样引用一维数组元素怎样引用一维数组元素在定义数组并对其中各元素赋值后,就可在定义数组并对其中各元素赋值后,就可以引用数组中的元素以引用数组中的元素注意:只能引用数组元素而不能一次整体注意:只能引用数组元素而不能一次整体调用整个数组全部元素的值调用整个数组全部元素的值数组元素的引用方式:数组元素的引用方式:数组名下标数组名下标 下标可以是整型常量或整型表达式。下标可以是整型常量或整型表达式。例如例如:a a0 0=a=a5 5+a+a7 7-a-a2*32*3 int n=5,a10;an=20;int n=5,a10;an=20;说明说明:(1 1)数组必须先定义再使用。且数组的引用只能引用)数组必须先定义再使用。且数组的引用只能引用)数组必须先定义再使用。且数组的引用只能引用)数组必须先定义再使用。且数组的引用只能引用单个元素,不能引用数组整体。单个元素,不能引用数组整体。单个元素,不能引用数组整体。单个元素,不能引用数组整体。例例例例 ch0=a;ch0=a;ch1=ch0;ch1=ch0;a0=a5+a7-a2*3;a0=a5+a7-a2*3;(2 2)一维数组的输入输出通常用一重循环完成)一维数组的输入输出通常用一重循环完成)一维数组的输入输出通常用一重循环完成)一维数组的输入输出通常用一重循环完成 for(i=0;i10;i+)for(i=0;i10;i+)scanf(“%d”,&ai);scanf(“%d”,&ai);main()main()int i,a10;int i,a10;for(i=0;i10;i+)for(i=0;i10;i+)ai=2*i+1;ai=2*i+1;for(i=0;i=9;i+)for(i=0;i=9;i+)printf(%d,ai);printf(%d,ai);例:数组元素赋值和输出例:数组元素赋值和输出例:数组元素赋值和输出例:数组元素赋值和输出例例6.16.1 对对1010个数组元素依次赋值为个数组元素依次赋值为0,1,2,3,4,5,6,7,8,90,1,2,3,4,5,6,7,8,9,要求按逆序输,要求按逆序输出。出。解题思路:解题思路:定义一个长度为定义一个长度为1010的数组,数组定义为整的数组,数组定义为整型型。要赋的值是从要赋的值是从0 0到到9 9,可以用循环来赋值,可以用循环来赋值。用循环按下标从大到小输出这用循环按下标从大到小输出这1010个元素个元素。6.1.2 6.1.2 怎样引用一维数组元素怎样引用一维数组元素#include int main()int i,a10;for(i=0;i=0;i-)printf(%d,ai);printf(n);return 0;0 1 2 3 4 5 6 7 8 9a0a1a2a3a4a5a6a7a8a9#include int main()int i,a10;for(i=0;i=0;i-)printf(%d,ai);printf(n);return 0;0 1 2 3 4 5 6 7 8 9a0a1a2a3a4a5a6a7a8a9先输出先输出a9,最,最后输出后输出a0例:输入十个整数,然后反序输出。例:输入十个整数,然后反序输出。例:输入十个整数,然后反序输出。例:输入十个整数,然后反序输出。main()main()int i,a10;int i,a10;for(i=0;i10;i+)for(i=0;i=0;i-)for(i=9;i=0;i-)printf(“%3d”,ai);printf(“%3d”,ai);main()main()int i,max,sum=0;int i,max,sum=0;int a10;int a10;for(i=0;i10;i+)for(i=0;i10;i+)scanf(“%d”,&ai);scanf(“%d”,&ai);max=a0;max=a0;for(i=0;i10;i+)for(i=0;i max)if(ai max)max=ai;max=ai;sum+=ai;sum+=ai;printf(“max=%d,sum=%dn”,max,sum);printf(“max=%d,sum=%dn”,max,sum);例:输入例:输入例:输入例:输入1010个整数,求其和及其中最大的数。个整数,求其和及其中最大的数。个整数,求其和及其中最大的数。个整数,求其和及其中最大的数。#define NUM 50;#define NUM 50;main()main()int i,scoreNUM,highest;int i,scoreNUM,highest;float sum,average;float sum,average;for(i=0;iNUM;i+)for(i=0;iNUM;i+)/*/*依次读入全班同学分数依次读入全班同学分数依次读入全班同学分数依次读入全班同学分数*/scanf(“%d”,&scorei);scanf(“%d”,&scorei);printf(“printf(“全班同学成绩公布如下:全班同学成绩公布如下:全班同学成绩公布如下:全班同学成绩公布如下:n”);n”);/*/*公布全班同学分数公布全班同学分数公布全班同学分数公布全班同学分数*/for(i=0;iNUM;i+)for(i=0;iNUM;i+)printf(“%d printf(“%d号同学:号同学:号同学:号同学:%5d”,i+1,scorei);%5d”,i+1,scorei);if(i%10=9)printf(“n”);if(i%10=9)printf(“n”);例:求例:求例:求例:求5050个学生的平均成绩和最高分个学生的平均成绩和最高分个学生的平均成绩和最高分个学生的平均成绩和最高分 for(i=0;iNUM;i+)for(i=0;iNUM;i+)/*/*求平均成绩并显示出来求平均成绩并显示出来求平均成绩并显示出来求平均成绩并显示出来*/sum+=scorei;sum+=scorei;average=sum/NUM;average=sum/NUM;printf(“printf(“全班平均成绩是:全班平均成绩是:全班平均成绩是:全班平均成绩是:%dn”,average)%dn”,average);highest=a0;highest=a0;for(i=0;iNUM;i+)for(i=0;i highest)if(scorei highest)highest=ai;highest=ai;printf(“printf(“最高分是:最高分是:最高分是:最高分是:%dn”,highest)%dn”,highest);对数组元素初始化的实现方法:对数组元素初始化的实现方法:1.1.在定义数组时对数组元素赋以初值。在定义数组时对数组元素赋以初值。例如例如:int a:int a1010=0,1,2,3,4,5,6,7,8,9;=0,1,2,3,4,5,6,7,8,9;将数组元素的初值依次放在一对花括弧内。经过上面的定义将数组元素的初值依次放在一对花括弧内。经过上面的定义和初始化之后,和初始化之后,a a0 0=0=0,a a1 1=1=1,a a2 2=2=2,a a3 3=3=3,a a4 4=4=4,a a5 5=5=5,a a6 6=6=6,a a7 7=7=7,a a8 8=8=8,a a9 9=9=9。在声明数组时初始化,基本格式为:在声明数组时初始化,基本格式为:在声明数组时初始化,基本格式为:在声明数组时初始化,基本格式为:类型类型类型类型 数组名数组名数组名数组名 整形常量表达式整形常量表达式整形常量表达式整形常量表达式=初值初值初值初值1 1,初值,初值,初值,初值2 2,6.1.36.1.36.1.36.1.3一维数组的初始化一维数组的初始化一维数组的初始化一维数组的初始化 3.3.如果想使一个数组中全部元素值为如果想使一个数组中全部元素值为0 0,可以写成,可以写成:int aint a1010=0,0,0,0,0,0,0,0,0,0;=0,0,0,0,0,0,0,0,0,0;或或 int aint a1010=0;=0;2.2.可以只给一部分元素赋值。可以只给一部分元素赋值。例如例如:int a:int a1010=0=0,1 1,2 2,3 3,4;4;定义定义a a数组有数组有1010个元素,但花括弧内只提供个元素,但花括弧内只提供5 5个初个初值,这表示只给前面值,这表示只给前面5 5个元素赋初值,后个元素赋初值,后5 5个元素值为个元素值为0 0。4.4.在对全部数组元素赋初值时,由于数据的个数已在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。经确定,因此可以不指定数组长度。例如例如:int a:int a5 5=1=1,2 2,3 3,4 4,5;5;也可以写成也可以写成 int aint a=1=1,2 2,3 3,4 4,5;5;int aint a1010=1=1,2 2,3 3,4 4,5;5;只初始化前只初始化前5 5个个元素,后元素,后5 5个元素为个元素为0 0。6.1.46.1.4一维数组程序举例一维数组程序举例例例6.2 6.2 用数组处理求用数组处理求FibonacciFibonacci数列问题数列问题解题思路:解题思路:例例5.85.8中用简单变量处理的,中用简单变量处理的,缺点缺点不能在不能在内存中保存这些数。假如想直接输出数内存中保存这些数。假如想直接输出数列中第列中第2525个数,是很困难的。个数,是很困难的。如果用数组处理,每一个数组元素代表如果用数组处理,每一个数组元素代表数列中的一个数,依次求出各数并存放数列中的一个数,依次求出各数并存放在相应的数组元素中在相应的数组元素中。#include int main()int i;int f20=1,1;for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;i20;i+)if(i%5=0)printf(“n”);printf(“%12d”,fi);printf(n);return 0;例例6.36.3 有有1010个地区的面积,要求对它们按个地区的面积,要求对它们按由小到大的顺序排列。由小到大的顺序排列。解题思路:解题思路:排序的规律有两种:一种是排序的规律有两种:一种是“升序升序”,从小到大;另一种是从小到大;另一种是“降序降序”,从,从大到小大到小。把题目抽象为:把题目抽象为:“对对n n个数按升序排个数按升序排序序”。采用起泡法排序。采用起泡法排序。985420895420859420854920854290854209a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;854209584209548209542809542089a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;542089452089425089420589a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;420589240589204589a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;204589024589a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;for(i=0;iai+1)for(i=0;iai+1)for(i=0;iai+1)for(i=0;iai+1)for(j=0;j5;j+)int a10;int i,j,t;printf(input 10 numbers:n);for(i=0;i10;i+)scanf(%d,&ai);printf(n);for(j=0;j9;j+)for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;printf(the sorted numbers:n);for(i=0;i10;i+)printf(%d,ai);printf(n);例:输入例:输入例:输入例:输入1010个整数,求其中的奇数之和,偶数之和。个整数,求其中的奇数之和,偶数之和。个整数,求其中的奇数之和,偶数之和。个整数,求其中的奇数之和,偶数之和。main()main()int a10,i;int a10,i;int sum1=0,sum2=0;int sum1=0,sum2=0;for(i=0;i10;i+)for(i=0;i10;i+)scanf(“%d”,&ai);scanf(“%d”,&ai);for(i=0;i10;i+)for(i=0;iaai+1i+1,就交换此两数,这样,大数就会逐渐,就交换此两数,这样,大数就会逐渐往下沉,小数往上升。往下沉,小数往上升。4 4个数,经过第一轮个数,经过第一轮3 3次两次两两比较、交换,最大数就会沉到最后,存放在两比较、交换,最大数就会沉到最后,存放在a3 a3 中。第二轮再将前面的中。第二轮再将前面的3 3个数经过个数经过2 2次这样的次这样的两两比较、交换后,其中的最大数就会被存放在两两比较、交换后,其中的最大数就会被存放在a2a2中,第三轮将剩下的中,第三轮将剩下的2 2 个数比较个数比较1 1次,大的数次,大的数被换到被换到a1,a1,小的数存放在小的数存放在a0a0中。这样,经过中。这样,经过三轮比较就完成了三轮比较就完成了4 4个数的排序。个数的排序。一般地,对一般地,对n n个数进行排序,共需进行个数进行排序,共需进行n-1n-1轮轮比较,在第比较,在第i i轮中要对轮中要对n-i+1n-i+1个数进行个数进行n-in-i次相邻元次相邻元素的两两比较、交换。素的两两比较、交换。一般地,设:一般地,设:n n个数为个数为 a0,a1,a2,a0,a1,a2,an-2,an-1 an-2,an-1,则则 n n 个数的冒泡排序算法可用个数的冒泡排序算法可用forfor循环表示为:循环表示为:for(i=0;i=n-2;i+)for(i=0;i=n-2;i+)for(j=0;j=n-2-i;j+)for(j=0;j aj+1)if(aj aj+1)将将ajaj的值与的值与aj+1aj+1的值互换;的值互换;冒泡法排序的程序:冒泡法排序的程序:用符号常量用符号常量N N表表示元素个数示元素个数#define N 6#define N 6#define N 6#define N 6main()main()main()main()int aN;int aN;int aN;int aN;int i,j,t;int i,j,t;int i,j,t;int i,j,t;printf(Please input printf(Please input printf(Please input printf(Please input%d numbers:n,N);%d numbers:n,N);%d numbers:n,N);%d numbers:n,N);for(i=0;iN;i+)for(i=0;iN;i+)for(i=0;iN;i+)for(i=0;iN;i+)scanf(%d,&ai);scanf(%d,&ai);scanf(%d,&ai);scanf(%d,&ai);for(i=0;i=N-2;i+)for(i=0;i=N-2;i+)for(i=0;i=N-2;i+)for(i=0;i=N-2;i+)for(j=0;j=N-2-i;j+)for(j=0;j=N-2-i;j+)for(j=0;j=N-2-i;j+)for(j=0;jaj+1)if(ajaj+1)if(ajaj+1)if(ajaj+1)t=aj;t=aj;t=aj;t=aj;aj=aj+1;aj=aj+1;aj=aj+1;aj=aj+1;aj+1=t;aj+1=t;aj+1=t;aj+1=t;printf(n The sorted printf(n The sorted printf(n The sorted printf(n The sorted numbers:n);numbers:n);numbers:n);numbers:n);for(i=0;i=N-1;i+)for(i=0;i=N-1;i+)for(i=0;i=N-1;i+)for(i=0;i=N-1;i+)printf(%d,ai);printf(%d,ai);printf(%d,ai);printf(%d,ai);printf(n);printf(n);printf(n);printf(n);main()main()int a11,i,j,t;int a11,i,j,t;printf(“Input 10 printf(“Input 10 numbers:n);numbers:n);for(i=1;i=10;i+)for(i=1;i=10;i+)scanf(%d,&ai);scanf(%d,&ai);printf(n);printf(n);for(i=1;i=9;i+)for(i=1;i=9;i+)for(j=1;j=10-i;j+)for(j=1;j a j+1)if(a j a j+1)t=a j;t=a j;a j =a j+1;a j =a j+1;a j+1 =t;a j+1 =t;printf(The sorted numbers:n);printf(The sorted numbers:n);for(i=1;i=10;i+)for(i=1;i=10;i+)printf(%d,ai);printf(%d,ai);程序流程图如下:程序流程图如下:6.2 6.2 怎样定义和引用二维数组怎样定义和引用二维数组2456 1847 1243 1600 2346 27573045 2018 1725 2020 2458 14361427 1175 1046 1976 1477 20181分队分队2分队分队3分队分队队员队员1 队员队员2队员队员3 队员队员4队员队员5队员队员6float pay36;6.2.16.2.1怎样定义二维数组怎样定义二维数组6.2.26.2.2怎样引用二维数组的元素怎样引用二维数组的元素6.2.36.2.3二维数组的初始化二维数组的初始化6.2.46.2.4二维数组程序举例二维数组程序举例6.2 6.2 怎样定义和引用二维数组怎样定义和引用二维数组二维数组定义的一般形式为二维数组定义的一般形式为:类型说明符类型说明符 数组名常量表达式常量表达式;数组名常量表达式常量表达式;例如:例如:定义定义a a为为34(334(3行行4 4列列)的数组,的数组,b b为为510(5510(5行行1010列列)的数组。如下:的数组。如下:float afloat a3 34 4,b b5 51010;不能写成不能写成 float afloat a3 3,4 4,b b5 5,1010;6.2.16.2.1怎样定义二维数组怎样定义二维数组注意:注意:我们可以把二维数组看作是一种特殊的一维我们可以把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组。数组:它的元素又是一个一维数组。例如:例如:可以把可以把a看作是一个一维数组,它有看作是一个一维数组,它有3个元素:个元素:a0、a1、a2,每个元素又是一个包含,每个元素又是一个包含4个元素的一维数组。个元素的一维数组。6.2.16.2.1怎样定义二维数组怎样定义二维数组 C C语言中,二维数组中元素排列的顺序是按行存语言中,二维数组中元素排列的顺序是按行存放的,即在内存中先顺序存放第一行的元素,再存放放的,即在内存中先顺序存放第一行的元素,再存放第二行的元素。下图表示对第二行的元素。下图表示对a a3 34 4数组存放的数组存放的顺序。顺序。a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a236.2.16.2.1怎样定义二维数组怎样定义二维数组a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23内存中的存储顺序内存中的存储顺序二维数组元素的表示形式为:二维数组元素的表示形式为:数组名下标下标数组名下标下标例如:例如:a a2 23 3下标可以是整型表达式,如下标可以是整型表达式,如 a a2-12-12*2-12*2-1数组元素可以出现在表达式中,也可以被赋值数组元素可以出现在表达式中,也可以被赋值例如:例如:b b1 12 2=a=a2 23 3/2/2不要写成不要写成 a a2 2,3 3,a a2-12-1,2*2-12*2-1形式形式6.2.2 6.2.2 怎样引用二维数组的元素怎样引用二维数组的元素怎样引用二维数组的元素怎样引用二维数组的元素for(i=0;im;i+)printf(“%d,%dn”,ai0,a0i);合法合法常出现的错误有:常出现的错误有:int a34;/*/*定义定义a a为为3434的数组的数组*/a34=3;在使用数组元素时,应该注意下标值应在已在使用数组元素时,应该注意下标值应在已定义的数组大小的范围内。定义的数组大小的范围内。6.2.2 6.2.2 6.2.2 6.2.2 怎样引用二维数组的元素怎样引用二维数组的元素怎样引用二维数组的元素怎样引用二维数组的元素可以用下面可以用下面4 4种方法对二维数组初始化:种方法对二维数组初始化:.分行给二维数组赋初值分行给二维数组赋初值 例如:例如:int aint a3 34 4=1=1,2 2,3 3,44,55,6 6,7 7,88,99,1010,1111,12;12;.可以将所有数据写在一个花括弧内,按数组排列可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值的顺序对各元素赋初值 例如:例如:int aint a3 34 4=1=1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,1010,1111,12;12;6.2.3 6.2.3 6.2.3 6.2.3 二维数组的初始化二维数组的初始化二维数组的初始化二维数组的初始化.可以对部分元素赋初值可以对部分元素赋初值 例如:例如:int a34=1,5,9;1 0 0 01 0 0 05 0 0 0 5 0 0 0 9 0 0 0 也可以对各行中的某一元素赋初值,如也可以对各行中的某一元素赋初值,如:int a int a3 34 4=1=1,00,66,00,0 0,11;11;1 0 0 01 0 0 00 6 0 00 6 0 00 0 0 11 00 11 01 0 0 01 0 0 05 6 0 0 5 6 0 0 0 0 0 0也可以只对某几行元素赋初值也可以只对某几行元素赋初值,如如:int a34=1,5,6;.如果对全部元素都赋初值,则定义数组时对第一维如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省的长度可以不指定,但第二维的长度不能省例如:例如:int aint a3 34 4=1=1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,1010,1111,12;12;它它等价等价于于:int aint a4 4=1=1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,1010,1111,12;12;在定义时也可以只对部分元素赋初值而省略第一在定义时也可以只对部分元素赋初值而省略第一维的长度,但应分行赋初值。维的长度,但应分行赋初值。例如例如:int aint a4 4=0=0,0 0,33,00,10;10;0 0 3 00 0 0 00 10 0 0 printf(array a:n);for(i=0;i=1;i+)for(j=0;j=2;j+)printf(%5d,aij);printf(n);main()int a23;int i,j;printf(“Input a23:n”for(i=0;i=1;i+)for(j=0;j=2;j+)scanf(%d”,&aij);例:例:/*注意输入输出二维数组的方法注意输入输出二维数组的方法*/输入时用空格或回车分隔输入时用空格或回车分隔例例6.46.4 将一个二维数组行和列的元素互换,将一个二维数组行和列的元素互换,存到另一个二维数组中。存到另一个二维数组中。6.2.4 6.2.4 二维数组程序举例二维数组程序举例解题思路:解题思路:可以定义两个数组:数组可以定义两个数组:数组a a为为2 2行行3 3列,存列,存放指定的放指定的6 6个数个数数组数组b b为为3 3行行2 2列,开始时未赋值列,开始时未赋值将将a a数组中的元素数组中的元素aijaij存放到存放到b b数组中的数组中的bjibji元素中元素中用嵌套的用嵌套的forfor循环完成循环完成6.2.4 6.2.4 二维数组程序举例二维数组程序举例#include int 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);处理处理a的一行中各元素的一行中各元素处理处理a中某一列元素中某一列元素输出输出a的的各元素各元素a元素值赋给元素值赋给b相应元素相应元素 printf(array b:n);for(i=0;i=2;i+)for(j=0;jmaxa01max,则,则表示表示a01a01是已经比过的数据中值最大的,是已经比过的数据中值最大的,把它的值赋给把它的值赋给maxmax,取代了,取代了maxmax的原值的原值。以后依此处理,以后依此处理,最后最后maxmax就是最大的值就是最大的值。for i=0 to 2 for j=0 to 3max=aijrow=Icolum=jaijmax真真 max=a00输出:输出:max,row,colum假假 int i,j,row=0,colum=0,max;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=%dnrow=%dn colum=%dn,max,row,colum);记记最大值最大值例:例:一个学习小组有一个学习小组有5个人,每个人有三门课的考个人,每个人有三门课的考试成绩。求各科的平均成绩和各科总平均成绩。试成绩。求各科的平均成绩和各科总平均成绩。分析:分析:可设一个二维数组可设一个二维数组a53存放五个人三门存放五个人三门课的成绩。再设一个一维数组课的成绩。再设一个一维数组v3存放所求得各存放所求得各科平均成绩。设变量科平均成绩。设变量ave为总平均成绩。为总平均成绩。姓名姓名 数学数学 英语英语 语文语文 张张 80 75 92 王王 61 65 71 李李 59 63 70 赵赵 85 87 90 周周 76 77 85main()int i,j,a53;float ave,v3,s=0;printf(input scoren);for(i=0;i3;i+)for(j=0;j5;j+)scanf(%d,&aji);s=s+aji;vi=s/5;s=0;ave=(v0+v1+v2)/3;printf(“Math:%fnEng:%fnLang:%fn,v0,v1,v2);printf(total:%fn,ave);程序如下:程序如下:6.3.1 6.3.1 怎样定义字符数组怎样定义字符数组6.3.2 6.3.2 字符数组的初始化字符数组的初始化6.3.3 6.3.3 怎样引用字符数组中的元素怎样引用字符数组中的元素6.3.4 6.3.4 字符串和字符串结束标志字符串和字符串结束标志6.3.5 6.3.5 字符数组的输入输出字符数组的输入输出6.3.6 6.3.6 善于使用善于使用字符串处理函数字符串处理函数6.3.7 6.3.7 字符数组应用举例字符数组应用举例6.3 6.3 字符数组字符数组用来存放字符数据的数组是字符用来存放字符数据的数组是字符数组数组。字符数组中的一个元素存放一个字符数组中的一个元素存放一个字符字符。定义字符数组的方法与定义数值定义字符数组的方法与定义数值型数组的方法类似型数组的方法类似。6.3.16.3.1怎样定义字符数组怎样定义字符数组例如:例如:char cchar c1010;c0=I;cc0=I;c1 1=;c=;c2 2=a;=a;c c3 3=m;c=m;c4 4=;c5=h;c6=a;c5=h;c6=a;c c7 7=p;c=p;c8 8=p;c=p;c9 9=y;=y;6.3.16.3.1怎样定义字符数组怎样定义字符数组对字符数组初始化,可逐个字符赋给数组中各元素。对字符数组初始化,可逐个字符赋给数组中各元素。例如:例如:char c10=I,a,m,h,a,p,p,ychar c10=I,a,m,h,a,p,p,y赋值形式:赋值形式:赋值形式:赋值形式:数组名数组名数组名数组名=字符串字符串字符串字符串;或或或或 数组名数组名数组名数组名=字符串;字符串;字符串;字符串;如:如:如:如:aa=”good morning!”aa=”good morning!”;或或或或 aa=”good morning!”;aa=”good morning!”;注意:数组注意:数组注意:数组注意:数组aaaa的长度为的长度为的长度为的长度为1414而不是而不是而不是而不是1313。6.3.2 6.3.2 6.3.2 6.3.2 字符数组的初始化字符数组的初始化字符数组的初始化字符数组的初始化 如果初值个数小于数组长度,则只将这些字符赋如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符。给数组中前面那些元素,其余的元素自动定为空字符。char cchar c1010=c=c,pp,rr,oo,gg,rr,aa,m;m;如果提供的初值个数与预定的数组长度相同,在如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




高等教育利用数组处理批量数据.pptx



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4334367.html