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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章 利用数组处理 批量数据
主讲人:卜文娟
主要内容
6.1 怎样定义和引用一维数组 6.2 怎样定义和引用一维数组 6.3 字符数组
源自文库
2013-8-20
第六章 利用数组处理批量数据
2
引言
问题:有如下几组数据,它们分别该如何存储呢? 一个班学生的学习成绩 一行文字 这些数据的特点是: 1、具有相同的数据类型
下界为 0,上界为 常量表达式-1
2013-8-20
第六章 利用数组处理批量数据
4
6.1 怎样定义和引用一维数组
例: int a[10]; float b[5]; 定义一维整型数组 a和实型数组b a数组中的元素是:a[0], a[1], a[2],
a[3], a[4], a[5], a[6], a[7], a[8], a[9];
6.2 怎样定义和引用二维数组
三、数组元素
数组名[下标1][下标2]
a[0][0] a[0][1] a[0][2] a[0][3]
长度:12
a[0][0] a[0][1]
序号
78 66 88 85 98
12 a[1][0] a[1][1] a[1][2] a[1][3] 个 a[2][0] a[2][1] a[2][2] a[2][3] 连 续 存 四、二维数组元素在内存 储 中的存储形式 单 元 按行从上到下,行内 从左到右存放 利用数组处理批量数据 2013-8-20 第六章
第六章 利用数组处理批量数据 1
i=6
i=j
21
6.2 怎样定义和引用二维数组
例6.7打印以下的杨辉三角形。(要求打印出10行) #include<stdio.h> int main( ) {int y[10][10], i, j; for(i=0; i<10; i++) {y[i][0]=1; y[i][i]=1;} for(i=2; i<10; i++) for(j=1; j<=i-1; j++) y[i][j]=y[i-1][j]+y[i-1][j-1]; for(i=0; i<10; i++) {for(j=0; j<=i; j++) printf(“%5d”, y[i][j]); printf(“\n”); } 2013-8-20 第六章 利用数组处理批量数据 return 0;}
2013-8-20 第六章 利用数组处理批量数据 8
6.1 怎样定义和引用一维数组
例6.3 已知一组数(n个),找出其中最大者。
#include<stdio.h> int main( ) { int i, n ; float a[20], max; scanf(“%d”, &n); for( i=0; i<n; i++) scanf(“%f ”, &a[i]); max=a[0]; for(i=1; i<n; i++) if(max<a[i]) {max=a[i]; } printf(“Max=%f\n”, max); return 0;}
2013-8-20 第六章 利用数组处理批量数据 11
6.1 怎样定义和引用一维数组
例6.4 对任意n个数按从大到小排序。(选择法)
#include<stdio.h> int main( ) { float a[100] , t ; int n, i , j , p ; scanf(“%d”, &n); for(i=0; i<n; i++) scanf(“%f ”, &a[i]); for(i=0; i<n-1; i++) { p=i; for(j=i+1; j<n; j++) if(a[p]<a[j]) p=j; if(p!=i){t=a[i];a[i]=a[p];a[p]=t;}} for(i=0; i<n; i++) printf(“%.2f ”, a[i]); return 0; }
2013-8-20 第六章 利用数组处理批量数据 9
6.1 怎样定义和引用一维数组
例6.3 已知一组数(n个),找出其中最大者(及其位置)。 #include<stdio.h> int main( ) { int i, n , position ; float a[20], max; scanf(“%d”, &n); for( i=0; i<n; i++) scanf(“%f ”, &a[i]); max=a[0]; position =0; for(i=1; i<n; i++) if(max<a[i]) {max=a[i]; position =i; } printf(“Max=%f\nPosition=%d\n”, max , position +1); return 0;}
2013-8-20 第六章 利用数组处理批量数据 12
6.1 怎样定义和引用一维数组
例6.4 对任意n个数按从大到小排序。(冒泡法) #include<stdio.h> int main( ) { float a[100] , t ; int n, i , j , p ; scanf(“%d”, &n); for(i=0; i<n; i++) scanf(“%f ”, &a[i]); for(i=1; i<n; i++) for(j=0; j<n-i; j++) if(a[j]<a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} for(i=0; i<n; i++) printf(“%.2f ”, a[i]); return 0;} 2013-8-20 第六章 利用数组处理批量数据
2013-8-20 第六章 利用数组处理批量数据 7
6.1 怎样定义和引用一维数组
例6.2 求Fibonacci数列的前30项。(一行三个) #include<stdio.h> int main( ) { long f[30]={1,1}; int i; for(i=2; i<30; i++) f[i]=f[i-1]+f[i-2]; for(i=0; i<30; i++) { if(i%3==0) printf(“\n”); printf(“%8ld”, f[i]); } return 0;}
13
6.2 怎样定义和引用二维数组
一、引入
姓名 张玉 王晶 李欣 英语
78 98 55
高数
66 67 76
物理
88 87 87
C 语言 85 77 90
二、定义
类型关键字 数组名[常量表达式1][常量表达式2] 例:int a[3][4];
2013-8-20
float b[5][10];
14
第六章 利用数组处理批量数据
6.2 怎样定义和引用二维数组
例6.6 在3*4的二维数组中找最大数及其行号和列号。
#include<stdio.h> int main( ) {int i , j , row=0 , col=0 , max ; int a[3][4]={{1,2,3,4},{9,8,7,6},{-5,5,-1,2}}; max=a[0][0]; for(i=0; i<3; i++) for(j=0; j<4; j++) if(a[i][j]>max){max=a[i][j];row=i;col=j;} printf(“max=%d,row=%d,col=%d\n”, max,row,col); return 0;}
b数组中的元素是:b[0], b[1], b[2], b[3], b[4]
2013-8-20 第六章 利用数组处理批量数据 5
6.1 怎样定义和引用一维数组
例6.1 对10个数组元素依次赋值为0,1,2,3, 4,5,6,7,8,9,要求按逆序输出。 #include <stdio.h> int 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″); return 0;}
2013-8-20 第六章 利用数组处理批量数据 6
6.1 怎样定义和引用一维数组
三、一维数组的初始化
1、在定义数组时,给数组元素赋初值。 例: int a[6]={1,2,3,4,5,6}; 2、可只给一部分数组元素赋初值。
例: int a[6]={1,2,3}; 3、未赋初值的数组,各元素值不确定。 4、初始化的数据个数确定时可以省略数组长度。 例: int a[ ]={1,2,3}; 5、数组中全部元素初始化为0 。 例: int a[6]={0};
2013-8-20 第六章 利用数组处理批量数据 10
6.1 怎样定义和引用一维数组
例6.4 对任意10个数按从大到小排序。(交换法) #include<stdio.h> int main( ) { float a[10], t; int i, j; for(i=0; i<10; i++) scanf(“%f ”, &a[i]); for(i=0; i<9; i++) for(j=i+1; j<10; j++) if(a[i]<a[j]) {t=a[i]; a[i]=a[j]; a[j]=t;} for(i=0; i<10; i++) printf(“%.2f ”, a[i]); return 0;}
2、输出
for ( i=0 ; i<3 ; i++ ) { for ( j=0 ; j<4 ; j++ ) printf ( "%8d" , a[i][j]); printf ( "\n"); } 2013-8-20 第六章 利用数组处理批量数据
16
6.2 怎样定义和引用二维数组
六、二维数组的初始化 1、分行初始化 例:int a[2][3]={{1,2,3},{4,5,6}}; 2、按存放顺序整体初始化 例: int a[3][2]={1,2,3,4,5,6}; 3、部分元素初始化 例: int a[3][3]={{1},{ },{4,5,6}}; 4、省略第一维初始化 例: int a[ ][3]={{1},{ },{4,5,6}}; 2013-8-20 第六章 利用数组处理批量数据
一个矩阵
数组:是一组具有相同 数据类型的数据的有序 集合。
2013-8-20
2、使用过程中需要保留 原始数据
C语言为这些数据,提供 了一种构造数据类型: 数组。
3
第六章 利用数组处理批量数据
6.1 怎样定义和引用一维数组
一、定义
标识符 数组长度 类型关键字 数组名[常量表达式];
二、数组元素
数组名[下标]
17
6.2 怎样定义和引用二维数组
例6.5 将一个二维数组行和列的元素互换,存到 另一个二维数组中。 例如:a= 1 2 3 4 5 6 1 4 b= 2 5 3 6
解题思路:将a数组中的元素a[i][j]存放到b数 组中的b[j][i]元素中。
2013-8-20
第六章 利用数组处理批量数据
18
6.2 怎样定义和引用二维数组
例6.5 将一个二维数组行和列的元素互换,存到 另一个二维数组中。 #include <stdio.h> printf(″array b:\n″); int main() for (i=0;i<=2;i++) { int a[2][3]={{1,2,3}{4,5,6}}; { for(j=0;j<=1;j++) int b[3][2],i,j; printf("%5d″,b[i][j]); printf(″array a:\n″); printf(″\n″); for (i=0;i<=1;i++) } { for (j=0;j<=2;j++) return 0; { printf(″%5d″,a[i][j]); } b[j][i]=a[i][j]; } printf(″\n″); } 2013-8-20 19 第六章 利用数组处理批量数据
a[0][2]
a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0]
67
87 77 55 76
a[2][1]
a[2][2] a[2][3]
87 90
15
6.2 怎样定义和引用二维数组
五、二维数组的输入/输出问题 1、输入
for ( i=0 ; i<3 ; i++ ) for ( j=0 ; j<4 ; j++ ) scanf ( "%d" , &a[i][j] ) ;
2013-8-20 第六章 利用数组处理批量数据 20
6.2 怎样定义和引用二维数组
例6.7打印以下的杨辉三角形。(要求打印出10行) j=0 j=1j=2 j=3j=4 j=5 j=6
i=0 i=1
1
1 1 1 2 1 1 3 3 1
i<j
i=2
i=3
i=4
i=5
2013-8-20
1 4 6 4 1 1 5 10 10 5 1 i>j …….
相关文档
最新文档