当前位置:文档之家› 经典C语言谭浩强版第七章数组

经典C语言谭浩强版第七章数组

float ave ; sum=0;
for(j=1; j<=40 ; j++) { scanf(“%d”,&s); sum=sum+s; }
ave=sum/40; printf(“ave=%f”,ave); }
假设现在要求保存每个学生的 成绩,那就不能只使用一个变 量s了,而需要40个变量,但这 样一来输入、输出、计算都会 变得繁琐. 在这种情况下,我 们可以使用数组类型,说明一 个含有40个元素的数组,每个 数组元素存放一个成绩,成绩 的输入、输出、计算都可通过 循环来实现
}
7 a[5 4]
a[6
]
可编辑ppt
7
a[7
例2: 用数组求fibonacci(斐波纳契)数列的前20个数
main( ) { int i , 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%4=”, f[i] );
27
2
2
12
a[1] 7
927
752
45
14
21
a[2] 2
952
745
514
41
4
a[3] 5
945
714
51
5
5
a[4] 4
914
71
7
7
7
a[5] 1
91
9
9
9
9
初始状态 第1
第2
第3
第4
第5
冒泡排序方法:轮依次比较轮相邻的两轮个数,将轮小数放前面轮,
大数放后面. n个数排序需要进行n-1轮比较, 从第1轮到
变量x的, 实际上a[5]是 不存在的, 如果执行了
会破坏数组以外其他变量的值 a[5]=72, 会将x原有的
正确数据覆盖掉
可编辑ppt
5
三、 一维数组的初始化 1. 概念 : 在定义一维数组时对各元素指定初始值称为
数组的初始化 如: int a[5] = { 1 , 3 , 5 , 7 , 9 } ; 2. 说明 (1) 对数组的全体元素指定初值, 初值用 { } 括起来, 数据
如: int a[5] = { 0 , 0 , 0 , 0 , 0 } ;
更简单的写法: int a[5]={ 0 } ;
可编辑ppt
6
例1: 输入一个数据,在已知数组中查找是否有该数据
main()
x9
{ int i , x ;
int a[10]={ 5, 8, 0, 1, 9, 2, 6, 3, 7, 4 };
可编辑ppt
2
#include <stdio.h> main( ) { int j , sum , s[40] ;
二、数组的概念 1.数组:由具有相同类型的
固定数量的元素组成的结构
float ave ; sum=0;
for(j=0; j<=39 ; j++) { scanf(“%d”,&s[j]);
2.数组元素:每一个数组元素 都是一个变量,为了与一般 的变量相区别,我们称数组
元素为下标变量
sum=sum+s[j]; } ave=sum/40;
3.下标变量在数组中的位置
序号称下标
printf(“ave=%f”,ave); }
可编辑ppt
3
7.1 一维数组的定义和引
一、 一维数组的定义用
1. 格式 : 类型标识符 数组名 [ 常量表达式] ;
(4) 常量表达式中不能包含变量,
:
常量表达式的值不能是实数
a[9
]
可编辑ppt
4
二、 数组元素的引用
1. 引用形式 : 数组名[ 下标 ]
1010 95 a[0
]
2. 说明
1012
(1) 下标可以是整型常量或整型表达式 1014
80 66
a[1 ]
如: a[1] , a[2*3]
1016 75 a[2
(2) 数组定义为 int a[5] , 数组长度为5 1018 84 ]
而下标在0 ---- 4之内, 即a[0] ---- a[4] 注意: 如果出现 a[5] = 72 ; 编译时不会 1020
72
aa] [[53 ]
指出错误, 系统会将a[4]后下一
a[4

假设这个存储空间] 是
存储单元 赋值为72, 但这样可能
第七章 数组
• 引言 • 7.1 一维数组的定义和引用 • 7.2 二维数组的定义和引用 • 7.3 字符数组
可编辑ppt
1
引言
一、数组的引入 为了便于处理一批类型相同的数据,引入了数组类型
例:某班有40名学生,求该班成绩的平均分
#include <stdio.h> main( ) { int j , sum , s ;
2. 说明
例: int a[10] ;
(1) 数组名是用户定义的标识符,
1010 95 a[0
数组名表示了一个存储区的首地址
]
(即第一个数组元素的地址)
1012 80
a[1
(2) 数组长度 : 指数组中元素的个数 1014 66 ]
(3) 数组元素的下标由零开始
:
: a[2
数组a 有10个元素: a[0] , a[1] … a[9] 1028 84 ]
第n-1轮, 各轮的比较次数依次为:n-1次、n-2次 … 1次
可编辑ppt
9
#include <stdio.h>
main( ) { int a[6] , i , j , t;
输入6个数据
for ( i=0 ; i<6 ; i++) scanf(“%d”, &a[i] );
f[0] 1
f[1] 1
f[2] 02
f[3] 03
f[4] 05
f[5] 08 ::
f[19 ]
67065
i=2 f[2]=f[0]+f[1]
i=3 f[3]=f[1]+f[2]
i=4 f[4]=f[2]+f[3]
}
}
可编辑ppt
8
例3: 用冒泡排序法对6个数进行排序(从小到大)
a[0] 9
79
scanf(“%d”, &x);
5 a[0 ]
8 a[1
0]
for ( i=0 ; i<10 ; i++) if ( x==a[i] )
1 a[2 9]
{ printf(“find!\n”); break;
}
2 a[3 ]
6 a[4
3]
if ( i==10 ) printf(“no find!\n”);
之间用逗号分开. 在这种情况下, 可以不指明数组的 长度, 系统会根据{ }内数据的个数确定数组的长度 如 : int a[ ] = { 1 , 3 , 5 , 7 , 9 } ;
(2) 对数组中部分元素指定初值 ( 这时不能省略数组长度 ) (3) 使如数: 组in中t 的a全[5部] =元{素1 ,初3始, 5值};都为 0
相关主题