一维数组,二维数组演示课件
合集下载
数组PPT课件
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;}
结论:若有n个数,则要进行n-1趟比较。 在第1趟比较中,要进行n-1 次两两比较; 在第 j 趟比较中,要进行n-j 次两两比较;
第七章 数组
在程序设计中,为了处理方便,把具有相同类 型的若干变量按有序的形式组织起来。这些按序排 列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。用一个统一的数组名和下 标来唯一地确定数组中的元素。
7.1 一维数组的定义和引用
7.1.1 一维数组的定义方式 在C语言中使用数组必须先进行定义。 一维数组的定义方式为:
下标变量和数组说明在形式中有些相似,但这两者 具有完全不同的含义。数组说明的方括号中给出的是某 一维的长度;而数组元素中的下标是该元素在数组中的 位置标识。前者只能是常量,后者可以是常量,变量或 表达式。
在C语言中只能逐个地使用下标变量,而 不能一次引用整个数组。
例如,输出有10个元素的数组必须使用循 环语句逐个输出各下标变量:
int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0;a[1]=1;...a[9]=9;
C语言对数组的初始化赋值还有以下几点规定:
1) 可以只给部分元素赋初值。
当{ }中值的个数少于元素个数时,只给前面部分元素 赋值,其余自动赋0值。
例如: int a[10]={0,1,2,3,4}; 2) 只能给元素逐个赋值,不能给数组整体赋值。
• 思路: – 将分数段编成数组下标索引 k=num/10 – 60以下的分数为一个档次 if (k<6) k=5 – 将下标与数组对应 k=k-5 – 相应的数组值加1
结论:若有n个数,则要进行n-1趟比较。 在第1趟比较中,要进行n-1 次两两比较; 在第 j 趟比较中,要进行n-j 次两两比较;
第七章 数组
在程序设计中,为了处理方便,把具有相同类 型的若干变量按有序的形式组织起来。这些按序排 列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。用一个统一的数组名和下 标来唯一地确定数组中的元素。
7.1 一维数组的定义和引用
7.1.1 一维数组的定义方式 在C语言中使用数组必须先进行定义。 一维数组的定义方式为:
下标变量和数组说明在形式中有些相似,但这两者 具有完全不同的含义。数组说明的方括号中给出的是某 一维的长度;而数组元素中的下标是该元素在数组中的 位置标识。前者只能是常量,后者可以是常量,变量或 表达式。
在C语言中只能逐个地使用下标变量,而 不能一次引用整个数组。
例如,输出有10个元素的数组必须使用循 环语句逐个输出各下标变量:
int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0;a[1]=1;...a[9]=9;
C语言对数组的初始化赋值还有以下几点规定:
1) 可以只给部分元素赋初值。
当{ }中值的个数少于元素个数时,只给前面部分元素 赋值,其余自动赋0值。
例如: int a[10]={0,1,2,3,4}; 2) 只能给元素逐个赋值,不能给数组整体赋值。
• 思路: – 将分数段编成数组下标索引 k=num/10 – 60以下的分数为一个档次 if (k<6) k=5 – 将下标与数组对应 k=k-5 – 相应的数组值加1
C语言数组详解ppt课件
}
ppt课件完整
10
§ 1.4一维数组程序举例
程序举例1:用选择排序法进行排序。
int a[5] = {3,6,1,9,4};
选择排序法是编程中经常用的一种排序算 法。具体如下:
先将5个数中最小的数与a[0]对换,再将 a[1]到a[4]中最小的数与a[1]对换,这样每比 较一轮,找出一个未经排序的数中最小的一 个。共比较4轮。
表示元素 的个数, 即数组长
度。 4
(一)一维数组(1)——定义及使用
注意: 1.数组名不能与其它变量名相同
void main() {
int a; float a[10]; …… }
ppt课件完整
5
(一)一维数组(1)——定义及使用
2. 不能在方括号中用变量来表示元素的个 数,但可以是符号常数或常量表达式。
6与 a[3] 对换
ppt课件完整
12
main() { int i,j,k,t;
int a[5] = {3,6,1,9,4}; for( i = 0; i < sizeof(a)/sizeof(int) – 1; i++) { k = i;
for( j = i + 1; j < sizeof(a); j++ ){ if(a[j] < a[k] ) k = j;
g[i]:第i个学生的成绩等等
ppt课件完整
2
(一)一维数组(1)——定义及使用
类型说明符 int
任一种基 本数据类 型或构造 数据类型。
数组名[常量表达式] a[10]
用户自定义的数组 名字,其定名规则 与变量名定名规则 一样,都需遵循标
识符定名规则
一维数组,二维数组演示课件
int n; scanf(“%d”,&n); int a[n];
12
6.2.2 引用一维数组的元素
➢ 必须先定义数组,才能引用数组中的元素 ➢ t=a[3],将a数组中序号为3的元素的值赋给变量t。 ➢ 只能逐个引用数组元素而不能一次引用整个数组中的
全部元素。 b=a[2];c=a[5]; printf(“%d,%d,%d,%d,%d,%d\n”,a);
16
#include <stdio.h> 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[0]~a[9]的值 为0~9
先输出a[9],最后输 出a[0]
6.2.1 定义一维数组 6.2.2 引用一维数组的元素 6.2.3 一维数组的初始化 6.2.4 一维数组程序举例
8
6.2.1 定义一维数组
一维数组是最简单的数组。
数组元素只有1个下标—一维数组,s[5],相当于“线”。 数组元素有2个下标—二维数组,s[1][2],相当于 “面”。 数组元素有3个下标—三维数组,s[2][4][3],相当于 “体”。
448 2 2
a[3]
222 8 0
a[4]
000 0 8
a[5]
999 9 9
27
for(i=0;i<3;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
12
6.2.2 引用一维数组的元素
➢ 必须先定义数组,才能引用数组中的元素 ➢ t=a[3],将a数组中序号为3的元素的值赋给变量t。 ➢ 只能逐个引用数组元素而不能一次引用整个数组中的
全部元素。 b=a[2];c=a[5]; printf(“%d,%d,%d,%d,%d,%d\n”,a);
16
#include <stdio.h> 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[0]~a[9]的值 为0~9
先输出a[9],最后输 出a[0]
6.2.1 定义一维数组 6.2.2 引用一维数组的元素 6.2.3 一维数组的初始化 6.2.4 一维数组程序举例
8
6.2.1 定义一维数组
一维数组是最简单的数组。
数组元素只有1个下标—一维数组,s[5],相当于“线”。 数组元素有2个下标—二维数组,s[1][2],相当于 “面”。 数组元素有3个下标—三维数组,s[2][4][3],相当于 “体”。
448 2 2
a[3]
222 8 0
a[4]
000 0 8
a[5]
999 9 9
27
for(i=0;i<3;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
数组PPT课件
if(aa[i]==c) k++ ; printf("The times is %d\n",k); }
第22页/共36页
例10(shuzu_010):统计在aa字符串中‘a’到‘z’出现的次数,结果放在数组bb中输 出。
{ char aa[1000] ; int bb[26],i ; printf("\nPlease enter a char string:") ; scanf("%s", aa) ; for(i=0;i<26;i++) bb[i] = 0 ; for(i=0;aa[i]!='\0';i++) if(aa[i]>= 'a' && aa[i]<= 'z') bb[aa[i]-'a']+=1; for ( i = 0 ; i < 26 ; i++ ) printf ("%c:%-5d ", i+'a',bb[i]) ; printf( "\n" ) ;}
• 教学内容
• 一维数组的定义和引用 • 二维数组的定义和引用 • 字符数组
第1页/共36页
二维数组
• 数学上的矩阵以及反映现实数据的表格等,通常用二维数组来表示。
89 12 90 89 90 89 34 56
23 89 89 88 77 79 87 87 67 67 78 98
第2页/共36页
二维数组的定义
第11页/共36页
/*shuzu_007B */
void main() {int a[M][N]
第22页/共36页
例10(shuzu_010):统计在aa字符串中‘a’到‘z’出现的次数,结果放在数组bb中输 出。
{ char aa[1000] ; int bb[26],i ; printf("\nPlease enter a char string:") ; scanf("%s", aa) ; for(i=0;i<26;i++) bb[i] = 0 ; for(i=0;aa[i]!='\0';i++) if(aa[i]>= 'a' && aa[i]<= 'z') bb[aa[i]-'a']+=1; for ( i = 0 ; i < 26 ; i++ ) printf ("%c:%-5d ", i+'a',bb[i]) ; printf( "\n" ) ;}
• 教学内容
• 一维数组的定义和引用 • 二维数组的定义和引用 • 字符数组
第1页/共36页
二维数组
• 数学上的矩阵以及反映现实数据的表格等,通常用二维数组来表示。
89 12 90 89 90 89 34 56
23 89 89 88 77 79 87 87 67 67 78 98
第2页/共36页
二维数组的定义
第11页/共36页
/*shuzu_007B */
void main() {int a[M][N]
数组 PPT课件
7.1.2 一维数组元素的引用 引用数组中的任意一个元素的形式: 数组名[下标表达式]
1.“下标表达式”可以是任何非负整型数据,取值范围是0~ (元素个数-1)。
特别强调:在运行C语言程序过程中,系统并不自动检验数组
元素的下标是否越界。因此在编写程序时,保证数组下标不越界
是十分重要的。
2.1个数组元素,实质上就是1个变量,它具有和相同类型单
第七章
主要内容:7.1 7.2 7.3 二维数组的定义和引用 字符数组
数组
一维数组的定义和引用
要求:1,掌握一维与二维数组的定义与使用方法
2,起泡排序算法
3,字符数组的定义与使用
4,使用字符数组进行串处理的方法。
数组是用于存储多个相同类型数据的变量的集合 7.1 一维数组的定义和引用 一维数组的定义方式: 类型说明符 数组名[常量 表达式]; 如:int a[10],b[20];
7.2 二维数组的定义和引用
7.2.2 二维数组的定义 二维数组的定义形式如下: 类型说明符 数组名[行常量表达式][列常量表达式];
例如:int a[3][4]; 定义了一个3行4列的数组,总共有12个数组元素
1.数组元素在内存中的排列顺序为“按行存放”,即先顺序存 放第一行的元素,再存放第二行,以此类推。 2. 设有一个m*n的数组x,则第i行第j列的元素x[i][j]在数组中的 位置为:i*n+j(注意:行号、列号均从0开始计数)。 3.可以把2维数组看作是一种特殊的1维数组:它的元素又是一 个1维数组。
一维数组举例 用数组来处理Fibonacci数列问题 #include<stdio.h> void main() {int i,f[20]={1,1}; for(i=2;i<20;i++) f[i]=f[i-1]+f[i-2];
数组二维数组PPT课件
24
第24页/共26页
/*打印输出每个学生的平均分*/
for(i=0;i<5;i++) printf("\nStudent %d's average score =%3.1f",i,fStudAverScore[i]);
/*打印输出每科的平均分*/
for(i=0;i<3;i++) printf("\nCourse %d's average value =%3.1f",i, fSubjectAverScore [i]);
二维数组的应用场合 四个学生三门课的成绩。
行:代表某个学生。
92.5 99.0 70.0 78.0
列:代表某门课程。
80.5
91.0
83.5
90.0
66.0
60.0
56.0
59.0
1
第1页/共26页
二维数组的定义
• 定义 数据类型 数组名[第一维长度][第二维长度];
• 例子 int a[3][3] , b[4][5];
for( j=0;j<3;j++) printf(“a[%d][%d] DS:%x\n",i,j,&a[i][ j]);
} }
5
第5页/共26页
二维数组初始化
• 初值表放在{ }内,应与元素在内存中存储顺序一致。 • 分行赋初值(第一维可省)
• int a[2][3]={ {1,2,3} , {4,5,6} }; • int a[2][3]={ {1} , {4} }; • int a[ ] [3]={1, 2, 3, 4, 5, 6}; • 按数组的存储顺序对每个元素赋初值 • int a[2][3]={1,2,3,4,5,6};
第24页/共26页
/*打印输出每个学生的平均分*/
for(i=0;i<5;i++) printf("\nStudent %d's average score =%3.1f",i,fStudAverScore[i]);
/*打印输出每科的平均分*/
for(i=0;i<3;i++) printf("\nCourse %d's average value =%3.1f",i, fSubjectAverScore [i]);
二维数组的应用场合 四个学生三门课的成绩。
行:代表某个学生。
92.5 99.0 70.0 78.0
列:代表某门课程。
80.5
91.0
83.5
90.0
66.0
60.0
56.0
59.0
1
第1页/共26页
二维数组的定义
• 定义 数据类型 数组名[第一维长度][第二维长度];
• 例子 int a[3][3] , b[4][5];
for( j=0;j<3;j++) printf(“a[%d][%d] DS:%x\n",i,j,&a[i][ j]);
} }
5
第5页/共26页
二维数组初始化
• 初值表放在{ }内,应与元素在内存中存储顺序一致。 • 分行赋初值(第一维可省)
• int a[2][3]={ {1,2,3} , {4,5,6} }; • int a[2][3]={ {1} , {4} }; • int a[ ] [3]={1, 2, 3, 4, 5, 6}; • 按数组的存储顺序对每个元素赋初值 • int a[2][3]={1,2,3,4,5,6};
01-数组 PPT
数组名[行下标] [列下标]; 例:a[2][3]
0
1
2
3
4
0
1
数组元素是变量,因此一切
2
可以使用变量的地方都可以
使用数组元素
3
int a[4][5];
二维数组初始化
⒈分行初始化。如: static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
⒉按数组排列的顺序将所有数据写在一个大括号内, 如:
1
2
3
4
5
6
7
8
9
10 11 12
二维数组元素值的输入与输出
实现的。
【例题6】二维数组输入与输出方法示例。
【例题7】在N行M列的二维数组x中,找出数组的最大值以及此最大值 所在的行、列下标。
字符数组与字符串
1.字符数组的定义
• char 数组名[常量表达式];
a[1]
a[2]
static int a[5]={0,1,2,3,4};
0
1
2
②可以只给一部分元素赋初值;
b[0]
b[1]
b[2]
static float b[5]={ , ,1.4,7.2}; 0.0
0.0
1.4
③在对全部数组元素赋初值时,可以不指定数组长度。
a[0]
a[1]
a[2]
static int a[]={1,2,3};
规律:十位数相同的归在一类里
二维数组
int a[5];
a[0] a[1] a[2] 数组元素为 a[3] 整型变量 a[4]
数组元素为 数组
aa[0] aa[1] aa[2]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第几个月 小兔子对数 中兔子对数 老兔子对数 兔子总数
1
1
0
0
1
2
0
1
0
1
3
1
0
1
2
4
1
1
1
3
5
2
1
2
5
6
3
2
3
8
7
5
3
5
13
┆
┆
┆
┆
┆
21
FF12
1 1
Fn Fn1 Fn2
(n 1) (n 2) (n 3)
费波那西(Fibonacci)数列
解题思路:
建立一个数组,将数列中第1个数放在数组第1个元素中, 数列第2个数放在数组第2个元素中,…
24
例6.3 假如有n个人,各人年龄不同,希望按年龄将他们从小 到大排列。
解题思路:
排序的规律有两种:一种是“升序”,从小到大;另 一种是“降序”,从大到小
把题目抽象为:“对n个数按升序排序”
采用起泡法排序:先将第1个数和第2个数比较,如果
第2个数比第1个数小,将两数交换,交换后大的放到
第2个位置,将第2个数和第3个数比较,如果第2个数
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9] 0123456789
17
6.2.3 一维数组的初始化
对数组元素的赋值既可以通过赋值语句来实现,也可以在定义 数组时同时给予初值,这就称为数组的初始化。 (1) 定义数组时对全部数组元素赋初值 int a[10]={0,1,2,3,4,5,6,7,8,9}; a[0]=0,a[1]=1,a[2]=2;a[3]=3;a[4]=4;a[5]=5,a[6]=6, a[7]=7,a[8]=8,a[9]=9。
a[5]
99 99
28
for(i=0;i<2;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
a[0]
4 22
a[1]
2 40
a[2]
0 04
a[3]
5 55
a[4]
8 88
a[5]
9 99
29
for(i=0;i<1;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
for(i=0;i<20;i++)
{
if(i%5==0) printf("\n"); //每行输出5个
printf("%12d",f[i]);
}
printf("\n");
23
例5.8程序在顺序求出并输出各个数后,不能保存这些 数据,如果要单独输出第10个数,是比较困难的。
本例用数组处理时,把每个数据都保存在各数组元素中, 如果要单独输出第10个数,是很容易的,直接输出f[9] 即可。
比第三个数小,将两数交换,交换后大的放到第3个
位置,。。。。执行一次循环后,最大的书被沉到最
后面。
25
for(i=0;i<5;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
a[0] 9 8 8 8 8 8
a[1]
8 9 55 5 5
a[2] 5 5 9 4 4 4
数组 一维、二维数组
1
上课要求
课前预习 将手机调到静音 认真做笔记 及时完成作业
2
学习目标
了解数组的概念 掌握定义和引用一维数组的方法 掌握定义和引用二维数组的方法
3
学习内容
数组 定义和引用一维数组 定义和引用一维数组
4
6.1 数组的概念
➢ 前几章使用的变量都属于基本类型,例如整型int、 字符型char、浮点型(float、double)数据, 这些都是简单的数据类型。
for(j=0;j<5;j++) for(i=0;i<5-j;i++) if (a[i]>a[i+1]) { ……}
31
#include<stdio.h> void main() {int a[10]; int i,j,t; printf("input 10 numbers :\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for( j=0;j<9;j++)
for(i=0;i<9-j;i++) if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the sorted numbers :\n"); for(i=0;i<10;i++) printf("%d ",a[i]);
32
printf("\n");
6.2.1 定义一维数组 6.2.2 引用一维数组的元素 6.2.3 一维数组的初始化 6.2.4 一维数组程序举例
8
6.2.1 定义一维数组
一维数组是最简单的数组。
数组元素只有1个下标—一维数组,s[5],相当于“线”。 数组元素有2个下标—二维数组,s[1][2],相当于 “面”。 数组元素有3个下标—三维数组,s[2][4][3],相当于 “体”。
………
9
6.2.1 定义一维数组
定义数组的方法与定义变量的方法类似。 int a;int a[5]; 不同的是数组一次定义一批有关联的变量; 在定义数组时需要指定这批变量的类型、数组名称,数组中
包含变量的个数。 如 int a[10];
10
6.2.1 定义一维数组
➢ 定义一维数组的方式为: 类型符 数组名[常量表达式];
448 2 2
a[3]
222 8 0
a[4]
000 0 8
a[5]
999 9 9
27
for(i=0;i<3;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
a[0]
54 44
a[1]
45 22
a[2]
22 50
a[3]
00 05
a[4]
88 88
6
➢ 数组是一组有序数据的集合。数组中各数据的排 列是有一定规律的,下标代表数据在数组中的序 号,如s[5]。
➢ 用一个数组名和下标唯一确定数组中的元素。 ➢ 数组中的每一个元素都属于同一个数据类型。 ➢ 用循环对数组中的元素进行操作,可以有效地处
理大批量的数据,大大提高效率。
7
6.2 定义和引用一维数组
13
6.2.2 引用一维数组的元素
➢ 引用数组元素的表示形式为: 数组名[下标] a[0]=a[5]+a[2+1]-a[2*3] a[7/3],a[19%3] int n=5,a[10]; a[n]=20;
14
注意定义数组与引用数组元素的区别:
形式上:int a[10];定义数组长度为10; t=a[6];引用a数组中序号为6的元素;
注意:如果数组的长度与定义初值的个数不相同,则数组长度 不能省略。
如果数组a的长度为10,使用int a[ ]={1,2,3,4,5};数组只赋了5个初值,系统认为 数组长度为5。 应该写为a[10] ]={1,2,3,4,5};
20
6.2.4 一维数组程序举例
例6.2 用数组来处理求Fibonacci数列问题。Fibonacci 数列问题的含义见例P138(兔子生小兔子)。
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}};等价于 int a[3][4]={{1,0,0,0},{5,6,0,0},{0,0,0,0}};
➢ 对于有些数据,只用简单的数据类型是不够的, 难以反映出数据的特点,也难以有效地进行处理。
5
➢ 30名学生成绩,需要用30个变量 ➢ 100名学生成绩,需要用多少个变量?
一组具有同一属性的数据
➢ 用s1,s2,s3,……,s30表示成绩,能否体现内在联系?
➢ C语言用方括号中的数字表示下标,如用s[15]表示, s为数组名,15为数组中元素的个数。
int n; scanf(“%d”,&n); int a[n];
12
6.2.2 引用一维数组的元素
➢ 必须先定义数组,才能引用数组中的元素 ➢ t=a[3],将a数组中序号为3的元素的值赋给变量t。 ➢ 只能逐个引用数组元素而不能一次引用整个数组中的
全部元素。 b=a[2];c=a[5]; printf(“%d,%d,%d,%d,%d,%d\n”,a);
18
(2) 可以只给一部分元素赋值,未被赋值的根据数组 类型自动赋值。 int a[10]={0,1,2,3,4}; int a[10]={0,1,2,3,4,0,0,0,0,0};
19
(3)在对全部数组元素赋初值时,如果数据个数确定,则可以在 定义数组时不指定数组长度,系统根据数据的数量确定数组的 长度。 int a[5]={1,2,3,4,5}; 可写为 int a[ ]={1,2,3,4,5};