WL第6章_利用数组处理批量数据

合集下载

c语言程序设计第06章利用数组处理批量数据

c语言程序设计第06章利用数组处理批量数据
第九页,共27页。
6.3.3 二维数组的初始化 (1) 分行给二维数组初始化。
如:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
(2) 按元素排列顺序给二维数组初始化。
如:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
第6章 利用数组处理(chǔlǐ)批量数据
6.1 为什么要用数组
6.2 定义和引用一维数组
6.3 二维数组的定义和引用 6.4 字符(zìfú)数组 6.5 提高部分
第一页,共27页。
6.1 为什么要用数组
1 为什么要用数组? 利用数组可以有效的处理大批量的具有同一属性的数
据,大大提高了工作效率,十分方便。 2 什么是数组?
思考(sīkǎo):有几种方法可以给数组的各个元素赋值?
第六页,共27页。
6.2.3 一维数组程序举例(jǔ lì)
例6.2 用数组求Fibonacci数列的前20项并输出。
编程序:
#include <stdio.h>
void main() { int i,f[20]={1,1};
/*初始化f[0]、f[1]*/
6.4.4 字符串的输入输出 1 用格式符%s将整个字符串输入输出
例如: char c[ ]=“happy”,ch[10 ],c1[5 ],c2[5 ],c3[5 ]; printf(“%s”,c);
scanf(“%s”,ch);
scanf(“%s%s%s”,c1,c2,c2);
printf(“%s%s%s”,c1,c2,c3);
第十五页,共27页。
注意: (1) 输出时遇到第一个’\0’就结束,不包括结束符’\0’。 (2) 用%s输出字符串时,输出项是数组名,不能是元素名。

利用数组可以有效地存储和处理成批数据 本章主要内容 数组...新版课件.ppt

利用数组可以有效地存储和处理成批数据 本章主要内容 数组...新版课件.ppt
精品
设定下界的方法 Option Base 1 Dim Data(10) As Single
‘设定下界为1 ‘下标号从1~10
6.2.2 Array函数
使用Array函数可以为数组元素赋值
示例
Dim D As Variant
‘定义数组名(变体类型)
D = Array(1, 2, 3, 4) 执行结果:1→D(0),2→D(1), 3→D(2), 4→D(3)
Print d(i); Next i
精品
6.4 For Each...Next循环语句
与前面的循环语句For...Next类似,都是用来执行指定重 复次数的循环。但For Each...Next语句专门作用于数组或对 象集合中的每一成员。语法格式:
For Each 成员 In 数组名 循环体 [Exit For]
对静态数组,Erase语句将数组重新初始化; 对动态数组, Erase语句将释放动态数组所精使品 用的内存
Erase 数组名[,数组名],…… 重新对静太数组进行初始化,数值置0,
字符为空字符串,而原数组存在。 释放动态数组存储空间,原有数组不再
存在。 变体数组,每个元素重新置为空。
Next 成员
“成员”是一个Variant变量,它实际上代表数组中每一 个元素
本语句可以对数组元素进行读取、查询或显示,它所重 复执行的次数由数组中元素的个数确定
S=0
For k=0 To 99
S = S + t(k)
‘累加/100
‘求平均分
精品
数组是一组按一定顺序排列的数据的集合
例如,学生成绩T=[t(0), t(1), … t(99)] 是一个数组
a11 a12 a13 A= a21 a22 a23

第6章利用数组处理批量数据(1)汇编

第6章利用数组处理批量数据(1)汇编
Chapter 6 Arrays
Why arrays
In previous chapters, we have learned basic data types, e.g. int, char, float. In this chapter, we will learn one of the derived data types, called array.
Length is the length of the array and must have a constant value
Why index2nd floor 1st floor 0th ground floor
It is like the building floors, it starts from ground floor (0) to the first floor (1), and then the second (2) floor, so on.
How to use array element
We can array element in any legal expressions (or statement)
int a[10]; int k;
a[k] = expression (has a value)
a[5]= ((x/y+3)%2)*4;
a[0] a[1] a[2] a[3] a[4]
How to define an array
Examples of legal and illegal definitions:
int a[n+6]; (n is a variable)
int _x[10];
int a[k+2]; (k is constant variable) int b[(x>y)+3]; int a[34%3+7];

C语言程序设计课件第6章 利用数组处理批量数据

C语言程序设计课件第6章 利用数组处理批量数据

void main()
{ int i,a[10];
for(i=0;i<=9;i++)
a[i]=i;
for(i=9;i>=0; i--)
printf("%d ",a[i]);
printf("\n"); }
先输出a[9],最 后输出a[0]
6.2.3 一维数组的初始化 P141
对数组元素的赋值既可以通过赋值语 句来实现,也可以在定义数组时同时 给予初值,这就称为数组的初始化
数组名的命名规则和变量名相同 常量表达式给出元素的个数 下标从0开始,如 int a[10];
a[0],a[1],a[2],…,a[9]
6.2.2 引用一维数组的元素 P140
必须先定义数组,才能引用数组中的 元素
只能逐个引用数组元素而不能一次引 用整个数组中的全部元素
6.2.2 引用一维数组的元素 P140
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int a[3][4]={{1},{5},{9}};等价于 int a[3][4]={{1,0,0,0},{5,0,0,0},
{9,0,0,0}}; int a[3][4]={{1},{5,6}};相当于 int a[3][4]={{1},{5,6},{0}};
6.2.1 定义一维数组 P140
定义一维数组的方式为: 类型符 数组名[常量表达式];
数组名的命名规则和变量名相同 常量表达式给出元素的个数 下标从0开始,如 int a[10];
a[0],a[1],a[2],…,a[9]
6.2.1 定义一维数组 P140
定义一维数组的方式为: 类型符 数组名[常量表达式];

最新利用数组处理批量数据

最新利用数组处理批量数据
int a[10]={0}; ➢ int a[5]={1,2,3,4,5};可写为
int a[ ]={1,2,3,4,5};
6.1.4一维数组程序举例
例6.2 用数组处理求Fibonacci数列问题 ➢解题思路:
例5.8中用简单变量处理的,缺点不能在内存 中保存这些数。假如想直接输出数列中第25 个数,是很困难的。
printf(“%12d”,f[i]); } printf("\n"); return 0; }
例6.3 有10个地区的面积,要求对它们 按由小到大的顺序排列。
➢解题思路:
排序的规律有两种:一种是“升序”,从小到 大;另一种是“降序”,从大到小
把题目抽象为:“对n个数按升序排序” 采用起泡法排序
a[0] a[1] a[2] a[3] a[4] a[5]
4 22 2 40 0 04 5 55 8 88 9 99
for(i=0;i<1;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
a[0] a[1] a[2] a[3] a[4] a[5]
20 02 44 55 88 99
for(i=0;i<5;i++) if (a[i]>a[i+1]) { ……}
6.1.2 怎样引用一维数组元素
➢引用数组元素的表示形式为: 数组名[下标]
如a[0]=a[5]+a[7]-a[2*3] 合法
int n=5,a[10]; a[n]=20;
合法
6.1.2 怎样引用一维数组元素
例6.1 对10个数组元素依次赋值为0,1, 2,3,4,5,6,7,8,9,要求按逆序输出。

第6章 利用数组处理批量数据

第6章 利用数组处理批量数据

#include <stdio.h> int main() { int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j; printf("array a:\n"); for (i=0;i<=1;i++) { for (j=0;j<=2;j++)
{ printf("%5d",a[i][j]); b[j][i]=a[i][j];
它的元素又是一个一维数组 • 例如,把a看作是一个一维数组,它有3个元素:
a[0]、a[1]、a[2] • 每个元素又是一个包含4个元素的一维数组
a[0] a[0][0] a[1] a[1][0] a[2] a[2][0]
a[0][1] a[1][1] a[2][1]
a[0][2] a[1][2] a[2][2]
for(i=0;i<4;i++) if (a[i]>a[i+1]) { ……}
……
for(i=0;i<1;i++) if (a[i]>a[i+1]) { ……}
for(j=0;j<5;j++) for(i=0;i<5-j;i++) if (a[i]>a[i+1]) { ……}
#include<stdio.h> int main( ) {int a[10]; int i,j,t; printf("input 10 numbers :\n"); for (i=0; i<10; i++) scanf("%d",

利用数组处理批量数据

利用数组处理批量数据

20
6.1.2 一维数组的初始化
定义数组的同时,给数组元 素赋初值——数组的初始化
21
【例】一维数组的初始化示例。
(1)在定义数组时对全部数组元素赋予初值 int a[5]; int i; a[0]=1;a[1]=2;... a[4]=5; int a[5]={1,2,3,4,5}; 等价于
for( i=0; i<5; i++ )
30
例 用冒泡法对6个数排序(升序)
第1趟寻找第一个最大的数
9 8 5 4 2 0 原 始 数 据
9 8 5 4 2 0
8 9 5 4 2 0 第 2 次
8 5 9 4 2 0 第 3 次
8 5 4 9 2 0 第 4 次
8 5 4 2 9 0
8 5 4 2 0 9
第 1 次
第 5 次


31
例 用冒泡法对6个数排序(升序)
10
6.1.1 一维数组的定义和引用
【例】一维数组示例。
N为符号常量 #define N 10 必须是常量表达式 main( ) 定义数组a和 b 输入的数据放入 数组b的元素中 { int i,a[3]; float b[N]; 给数组a的元素赋值 a[0]=2; a[1]=4; a[2]=a[0]+a[1]; for ( i=0; i<N; i++ ) scanf("%f",&b[i]); printf("%d %d %d\n",a[0],a[1],a[2]); for ( i=0; i<N; i++ ) printf("%.0f ",b[i]); printf("\n"); }

利用数组处理批量数据共94页文档

利用数组处理批量数据共94页文档
int a[10]={0}; ➢ int a[5]={1,2,3,4,5};可写为
int a[ ]={1,2,3,4,5};
6.1.4一维数组程序举例
例6.2 用数组处理求Fibonacci数列问题 ➢解题思路:
例5.8中用简单变量处理的,缺点不能在内存 中保存这些数。假如想直接输出数列中第25 个数,是很困难的。
printf(“%12d”,f[i]); } printf("\n"); return 0; }
例6.3 有10个地区的面积,要求对它们 按由小到大的顺序排列。
➢解题思路:
排序的规律有两种:一种是“升序”,从小到 大;另一种是“降序”,从大到小
把题目抽象为:“对n个数按升序排序” 采用起泡法排序
a[0] a[1] a[2] a[3] a[4] a的一个数,依次求出各数并存放在相应的数组 元素中
#include <stdio.h> int main() { int i; int f[20]={1,1};
for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1];
for(i=0;i<20;i++) { if(i%5==0) printf(“\n”);
#include <stdio.h>
int main()
{ int i,a[10];
for (i=0; i<=9;i++)
a[i]=i;
for(i=9;i>=0; i--)
使a[0]~a[9]
printf("%d ",a[i]); 的值为0~9
printf("\n");
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

printf("%d", a[0]);
退出
12/78
例6.1:数组的下标引用
输出结果: main() { int i,a[5]; for (i=0;i<5;i++) a[i]=i*i;
下标引用
0 1 4 9 16
}
for(i =0; i <5;i++) printf(“%d\n”,a[i]);
退出
退出
16/78
一维数组的输入和输出
只能逐个对数组元素进行操作。
int a[10],i;
输入方法: 输入第i个数组元素:
scanf("%d",&a[i]);
输出方法:
输出第i个数组元素:
printf("%d",a[i]);
输入整个数组元素:
for (i=0;i<10;i++) scanf("%d",&a[i]);
a[9]
数组首地址
a[1]
a[8] a[7]

a
a[0]
退出
8/78
二、数组的定义与初始化



int int int int int
a[5] = { 12, 34, 56 ,78 ,9 }; a[5] = { 12,34 }; 即a[0]=12,a[1]=34 a[5] = { 0,0,0,0,0 }; a[5] = { 0 }; a[] = { 11, 22, 33, 44, 55 };
退出
22/78
#include <stdio.h> void main() { int a[10],k,j; for (j=0;j<10;j++) scanf("%d",&a[j]); for (j=0;j<10;j++) printf("%d ",a[j]); 思考:如何把最小元素放 到数组的最前面? k=0; for (j=1;j<10;j++) if (a[j]<a[k]) k=j; /*a[k]为最小元素*/ printf("\n"); printf("最小元素=%d\n ",a[k]);
}
退出
23/78
0
1
2
3
4
5
6
7
8
9
a[10] 10 12 33
4
25
1
6
38 52 22
temp=a[k]
1 temp
退出
24/78
0
1
2
3
4
5
6
7
8
9
a[10]
10 12 33
4
25
1 10
6
38 52 22
temp=a[k]
1 temp
a[k]=a[0]
退出
25/78
0
1
2
3
4
5
6
7
8
9
退出
19/78
课堂练习:数组的倒置(倒置.c)
#include<stdio.h> main()
{int a[10];
int temp,i;
for (i=0;i<10;i++)
for (i=0;i<10;i++)
/*输入10个数*/
scanf("%d",&a[i]); /*输出10个数*/ printf("%4d",a[i]);
18/78
课堂练习:数组的倒置(倒置.c) 例:
0 1 2 3 4 5 6 7 8 9
0
0
11 22 33 44 55 66 77 88 99
1 2 3 4 5 6 7 8 9
99 88 77 66 55 44 33 22 11 0
a[0]
a[1] a[i]
a[9]
a[8] a[9-i]
i: 0~n/2

保存大量相同类型的相关数据
如全班100名学生的成绩处理
;统计50个商品的平均价
格等等。 问题具有的特性:数据类型相同。 现有的解决方案:采用简单变量的方式。 现有方案的缺陷: ①需要大量不同的标识符作为变量名; ②变量在内存中的存放是随机的; ③随着这种变量的增多,组织和管理好这些变量会使程 序变得复杂。 改进的解决方案:使用数组。
退出
4/78
数组(Array)的用处
如矩阵运算,表格数据等
1 23 5 0 3 7 13 9 12
0 8 4
退出
5/78
数组具有的特点
1.数组是一种变量的集合,在这个集合中,所有变 量的数据类型都是相同的;
2.每一个数组元素的作用相当于简单变量;
3.同一数组中的数组元素在内存中占据的内存空间 是连续的; 4.数组的大小(数组元素的个数)必须在定义时确 定,在程序中不可改变;
a[10]
10 12 33 1
4
25 10
6
38 52 22
temp=a[k]; a[k]=a[0];
1
temp
思考:
a[0]=temp;
如何找第2小 的元素,找第3小 的元素…?
退出
26/78
(2) 直接选择排序法 首先从所有n个待排序数据中选择最小的元素,将 该元素与第1个元素交换,再从剩下的n-1个元素中选
退出
20/78
for (i=0;i<5;i++) /*将数组中的10个数首尾倒置*/ { temp=a[i]; a[i]=a[9-i]; a[9-i]=temp;
}
printf("\n");
for (i=0;i<10;i++)
printf("%4d",a[i]); }
/*输出倒置后的10个数*/
退出
退出
7/78

例: int a[10];
定义一个有10个元素的数组,每个元素的类型均为int 使用a[0]、a[1]、a[2]、……、a[9]这样的形式访问
每个元素。可以像使用普通变量一样使用他们。 系统会在内存分配连续的10个int空间给此数组。 直接对a的访问,就是访问此数组的首地址。
第6章 数组
第6章
利用数组处理批量数据
数组的定义、引用 数组的初始化
数组应用举例
字符数组 综合应用
退出Βιβλιοθήκη 2/78内容提要

数组类型;
一维数组和二维数组的初始化;
常用算法:排序、查找、求最大最小值等;
用字符数组存取字符串; 使用字符串处理函数处理字符串。
退出
3/78
数组(Array)的用处
13/78
例: main() { int i, a[5]={0,1,2,3,4}; for(i =0; i <5;i++)
给数组赋 初值
例: main() { int i, a[]={0,1,2,3,4}; for(i =0; i <5;i++)
赋值同时确定 了数组的大小
printf(“%d\n”,a[i]); printf(“%d\n”,a[i]);
21/78
四、一维数组应用程序举例
(1)引例 a.求任意10个整数的最小值。 b.在一个一维数组中找出最小元素。 c.在一个一维数组中找出最小元素所在位置。
int a[10];
0 1 2 3 4 5 6 7 8 9
a[10] 10 12 33
4
25
1
6
38 52 22
min=1,即a[k] k=5
退出
10/78
三、数组的使用
引用格式:数组名[下标]


a[0] 0 数组的下标都是从0开始。 a[1] 2 对数组每个元素的使用与普通变量无异。 a[2] 4 可以用任意表达式作为下标,动态决定访问哪个元素。 a[3] 6 #define SIZE 10 a[4] 8 int a[SIZE]; a[5] 10 for (i=0; i<SIZE; i++) a[6] 12 a[i] = 2 * i; a[7] 14 a[8] 16 11/78 退出 a[9] 18
数组大小最好用宏来定义,以适应未来可能的变化。
#define
SIZE 10 int a[SIZE];

数组大小定义好后,将永远不变。
退出
9/78
初始化数组元素时,如果元素初值个数<数组的 长度,有可能出现下面两种情况:
①自动存储类型: 未给定的数组元素的值不能确定。 例如:int c[5] ={1, 3, 5}; 则:c[0]=1,c[1]=3,c[2]=5。 c[3]和c[4]的值不能确定。 ②静态存储类型: 数值型数组和字符型数组有所不同。 例如:static int d[5] ={11, 33, 55}; 则:d[0]=11,d[1]=33,d[2]=55,d[3]=0,d[4]=0。 而:static char w[5]={'A','B','C'}; 则:w[0]=„A‟,w[1]=„B‟,w[2]=„C‟,w[3]=w[4]=NULL。
8
i=1
8
25
49
25*
16
21
最小者 16 交换25,16
退出
28/78
i=2
8 0
相关文档
最新文档