第六章-利用数组处理批量数据
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2021/2/7
6
例题6_1 一维数组的赋值
void main() { int a[10],k; for(k=0;k<10;k++) /*注意k的变化范围*/ scanf("%d",&a[k]); for(k=9;k>=0;k--) /*注意k的初始值*/ printf("%7d",a[k]); printf(“\n”);
型数组 注意:数组的下标从0开始
2021/2/7
13
A[0][0]
七、二维数组的存储
A[0][1] A[0][2]
存储——按行存取(先存取行, A[0][3]
再存取列)
A[1][0]
如int a[3][4]在内存中的存储是: A[1][1]
3、引用方式——Array_Name[下标],其中下 标可以是整型(字符型)常量或变量表达式 (注意,与定义时候区别)
4、数组的每个元素就相当于一个普通的变量。
5、数组的使用一般与for循环配合使用。(一
维数组与一重for循环配合)
2021/2/7
5
三、引用举例
例1:从键盘输入十个整数,然后反序输出这十个 数。
}
2021/2/7
7
四、一维数组的初始化
数组初始化的一般形式: type Array_Name[size]={……};
1、初始化所有元素 int a[5]={1,2,3,4,5};
2、初始化部分(只能是前部分)元素 int a[5]={1,2};
3、给数组的每个元素初始化相同的值,也必须完全写 出 int a[5]={1,1,1,1,1}不能是int a[5]={1*5};
不允许是变量或变量表达式)其含义是表示:数组的长 度——数组包含的数据(元素)的个数。
4)中括号叫下标运算符。
5)数组的下标从0开始计算,如int a[10],表示的是 a[0],a[1]……a[9];
2021/2/7
3
二、一维数组定义举例
int a(10); int a[n]; int a[10]; int a[5.5]; int a[‘a’]; int a[“a”]; #define N 5
4、如果给数组的每个元素都赋了初始值,则可以不写 数组的长度(size)
2021/2/7 int a[]={1,2,3,4,5}int a[5]={1,2,3,4,5} 8
五、一维数组应用பைடு நூலகம்例
例6_2,求Fibonacci数列的前20项
1
(n=1)
1
(n=0)
Fn= 1
(n=2) F[n]= 1
}
}
2021/2/7
10
例题6_3 将十个数按序输出
基本思想:相邻两个数比较,小的放在前面。 (起泡法,冒泡法)
98888555
89555844 5 5 9 4 4 4 8 2……
44492228
22229999
2021/2/7
11
例6_3
void main()
{
int a[11]; /*一种技术处理,为了习惯,下标从1开始*/
分析:
1、要将十个个数输入,就必须存储在十个变量中, 因此应该定义一个整型数组int a[10];
2、要连续输入这十个数,需要用十个scanf函数, 而且每个scanf函数的形式都是一样 的,scanf(“%d”,&a[k]);既然如此,我们就可以用循 环,而且循环次数已知,用for。
3、最后输出也是一样。
(n=1)
Fn-1+Fn-2(n>=3)
F[n-1]+F[n-2] (n>=2)
分析:
1、要求前20项,应该定义数组 int a[20]
2、从图中知道,数组的前两个元素已知,int a[20]={1,1}
3、根据公式进行计算
2021/2/7
9
例题6_2
void main()
{
int f[20]={1,1}; /*f[0]=1,f[1]=1*/
第六章
利用数组处理批量数据
2021/2/7
1
一、数组的概念
数组——将多个同类型的数据组合在一 起
如:在一个程序中需要使用1000个整型变 量,用原来的方法,只能:
int a1,a2,a3……,a1000;这样做显然不能实现。
如果用数组,只需要
int a[1000];它就表示同时定义了1000个整型变 量。
int i;
for(i=2;i<20;i++) /*因为f[0],f[1]已知,因此I从2开始*/
f[i]=f[i-1]+f[i-2];
for(i=0;i<20;i++)
{
if(i%5==0)
/*这个if的作用在于控制每行输出5个数*/
printf("\n");
printf("%12d",f[i]);
int i,j,t;
for(i=1;i<11;i++) /*输入10个数*/
scanf("%d",&a[i]);
for(j=1;j<=9;j++) /*需要比较的轮数*/
for(i=1;i<=10-j;i++) /*每轮需要比较的个数*/
if(a[i]>a[i+1]) /*比较相邻两个数*/
{t=a[i];a[i]=a[i+1];a[i+1]=t;} /*交换顺序*/
for(i=1;i<11;i++) /*输出10个数*/
printf("%8d",a[i]);
printf("\n");
2021/2/}7
12
六、二维数组的定义
1、定义:
type Array_Name[size1][size2]; 要求与一维数组一样,其中size1表示第一维
的长度(行),size2表示第二维的长度(列) 如:int a[3][4]——定义了一个3行4列的整
int a[N];
——错误 ——错误 ——正确 ——错误 ——正确 ——错误 ——正确
2021/2/7
4
三、一维数组的引用
1、数组和变量一样,必须先定义,再使用(定 义必须放在所有执行语句之前,数组名不能与 其它变量名同名)
2、数组的使用——只能一次使用一个元素, 数组不能作为一个整体被使用。
2021/2/7
2
A[0]
二、一维数组
A[1] ……
1、定义:
A[n-2]
type Array_Name[size]; 注意:
A[n-1]
1)type表示数组数据的类型(可以是任何合法的类型)
2)Array_Name表示数组名,其命名规则与变量名的命名规 则相同
3)size——是整型(字符型)常量或常量表达式,(绝对