Professional Documents
Culture Documents
数组的存 储方 式— 连续存储
—
下标变量 的概 念— 数组 的元 素
—
按照下标 的个 数,数 组分 为一维 数组和 多维 数组
。
6.1.1 一维 数组 的定 义及使
用1 一维数组 的定 义和初 始化
一维数 组只 有一个 下标 ,可 用来表 示数列 、向 量。
举例 说明 定义及 初始 化方法 :
元素个数
int a[20]; // 20 个整数 元素 的数组 正整数常
# define N 50 //const int N=50; 数
double x[ N ];
char s[10]; // 包含 10 个字 符的 字符串 定义 时不确 知
元素 个数 :
static int st[40]; // 静态整数 数组 大开小 用
int b [6]={2, 6, 2, 7 ,8, 9} // 定义 并初 始化
int c[10]={1, 6 } 定义时 元素 个
数
int d[ ]={1, 2, 3, 4 ,5} 必须 明确
2 一维数 组的 使用
( 1 ) 使用 数组名 —— 作函 数参数 。例 如:
void main(){
int a[10]; …;
sort(a); …; // 对数 组排 序
}
void sort(int a[10]){…} // 排序 函数
定义数组 :
int a[5];
读入数组 元素值 :
for(int i=0; i<5; i++) cin>>a[i];
求数组元 素和:
for(i=0, s=0; i<5; i++) s+=a[i];
输出元素 及平均 值:
for(int i=0; i<5; i++) cout<<a[i];
cout<<s/10;
3 一维数 组的 应用举 例
筛选 :
for(i=3; i<=100; i++){
以 a[i] 为基础 ,剔除 数组 中 a[i] 的倍
数(清 0 )
}
输出 数组 a 中所有 非 0 元素
6.1.1
结束
补充: 数组 和函 数
——数 组的 查找和 排序
算法
本节介绍 数组 作为函 数参 数的使 用方法
1 数组的 查找
2 数组的 排序
1 数组的查 找
查找功能 的使 用举例 :
int a[100];
int key, k;
k=search(a,key); // 在数组 a 中查找关键字 key, 返回
下标
if(k==-1) cout<<“no”<<key<<endl;
else cout<<“a[”<<k<<“]=”<<key;
如何定义 查找 函数
— — 在数 组中 查找某 关键 字,返 回其
下标
无序数组 —— 简单查 找
函数头:
int search (int a[n], int key)
改造 为: int search(int a[ ], int n, int key)
调用语句 例: bisearch(a,8,5);
演示例程 序 bisearch 。
2 数组的排 序
min=a[i]; pos=i;
for(j=i+1;j<n;j++)
if(a[j]<min) { min=a[j]; pos=j; }
if(pos!=i){ 交换 a[i] 和 [pos]; }
选择排序 函数 描述:
void selectsort(int a[],int n){
for(int i=0;i<n-1;i++) {
int min=a[i], pos=i;
for(int j=i+1;j<n;j++)
if(a[j]<min) { min=a[j]; pos=j; }
if(pos!=i) { int t=a[i];a[i]=a[pos]; a[pos]=t;}
}
}
调用语句 例: selectsort(a,10);
演示例程 序 selectsort 。
2 冒泡排序
冒泡 排序 算法思 想:
第 0 次:在 a0 - an-1 中,从 an-1 开始 ,两 两比较 ,将
小的 排在 前面, 大的 排在后 面, 将最小 值冒到 a0 处;
第 1 次:在 a1 - an-1 中,将 最小值 冒到 a1 处;
…… ……
第 i 次:在 ai - an-1 中,将最 小值 冒到 ai 处;
…… ……
第 n-2 次:在 an-2 - an-1 中,将 最小 值冒到 an-2 处;
顶层 算法 描述:
for(i=0;i<n-1;i++){
在 a[i] - a[n-1] 中,从 a[n-1] 开始 两
两比 较,
将最小 值冒 到 a[i] 处;
“ 在 ai - an-1 中,从 an-1 开始两两 比较 ,将最 小值 冒
到 ai 处”的 算法 描述:
2 二维数 组的 使用
二维数组 的使 用方法 与一 维数组 完全类 似, 除了
作为 函数 参数, 必须 使用到 下标 变量。 二维数 组的 下
标变 量一 定带有 两个 下标。
3 二维数 组的 应用举 例
6.1.2
结束
6.2 字符数组的定义及应
用
字符数组 是元 素为字 符类 型的一 维数 组
,其 定义 、初始 化及 操作方 法与 一般一 维数
组的 原则 一样。
第六章
结束
cha r s1[ 40] ,c ha r s 2[ 40] , c ha r s3[ 40 ];
cin >> s1> >s2 >> s3 ;
if( st rcm p(s 1, s2 )>0 ){
cha r t[4 0];
str cp y(t ,s1 );
str cp y(s 1,s 2) ;
str cp y(s 2,t );
}
if( st rcm p(s 1, s3 )>0 ){
cha r t[4 0];
str cp y(t ,s1 );
str cp y(s 1,s 3) ;
str cp y(s 3,t );
}
if( st rcm p(s 2, s3 )>0 ){
cha r t[4 0];
str cp y(t ,s2 );
str cp y(s 2,s 3) ;
str cp y(s 3,t );
}
cou t< <s1 <<' \t '< <s2 << '\t '<< s3 << end l;
}