数组

数组新世界

1数据类型
一维数组的定义数组

一维数组的定义

数据类型 数组名[常量表达式];
注意不要越界
数组名表示内存首地址,它是地址常量
常量表达式包括常量、符号常量

初始化

一维数组的初始化
初始化是指在定义数组时,为数组元素赋初值
(在编译阶段使之得到初值)
数组不初始化,其元素值为随机数
可以只给部分数组元素赋初值,其余的自动赋以0

当全部数组元素赋初值时,可不指定数组长度
int a[5]={1,2,3,4,5};
等价于:a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5;
必考题
----------读10个整数存入数组,找出其中最大值及其位置
#include
using namespace std;
#define SIZE 10
void main()
{int x[SIZE],i,k;
cout<<“Input “<< SIZE<<” numbers:\n”;
for(i=0;i<SIZE;i++) cin>>x[i];
k=0;
for(i=1;i<SIZE;i++)
if(x[k]<x[i]) k=i;
cout<<"Maximum value is "<<x[k]<<endl;
cout<<"it’s position is "<<k<<endl;
}
--------------用简单选择法对10个数排序
#include
using namespace std;
#define SIZE 10
void main()
{ int a[SIZE],i,j,k,x;
cout<<"Input “<< SIZE<<” nfor(i=0;i< SIZE;i++) cin>>a[ifor(i=0;i< SIZE-1;i++) //找第i个最{ k=i; //第i个最小数的下标是k
for(j=i+1;j< SIZE;j++)
if(a[j]<a[k]) k=j;
if(i!=k) //第i个最小数的下标不是i
{x=a[i];a[i]=a[k];a[k]=x;}
}cout<<“The sorted numbers:\nfor(i=0;i< SIZE;i++)
cout<<a[i]<<” ";

用冒泡法对n个数排序(由小到大)
#include
using namespace std;
// #define N 10
const int N=10;
void main()
{ int a[N+1],i,j,t;
cout<<“Input “<< N<<” numbers:\n”;
for(i=1;i<N+1;i++) cin>>a[i];
for(j=1;j<N;j++)
for(i=1;i<N+1-j;i++)
if (a[i]>a[i+1])
{ t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}cout<<“The sorted numbers:\n”;
for(i=1;i<N+1;i++) cout<<a[i]<<" ";

二维数组的引用

分行初始化
在每行的内容都多加个{}
可全部初始化,也可以部分初始化,只不过剩下来的都为零

举例

1----
将二维数组行列元素互换存到另一个二维数组中----------------------
#include
using namespace std;
void main()
{ int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
cout<<“array a:\n”;
for(i=0;i<=1;i++)
{ for(j=0;j<=2;j++)
{ cout<<a[i][j];
b[j][i]=a[i][j];
}
cout<<endl;
}
cout<<“array b:\n”;
for(i=0;i<=2;i++)
{ for(j=0;j<=1;j++)
cout<<b[i][j];
cout<<endl;
}
}
2–求二维数组中最大元素值及其行列号--------------------------------------------
#include
using namespace std;
void main()
{ int a[3][4]={{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}};
int i,j,row=0,colum=0,max
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{ max=a[i][j];
row=i;
colum=j;
}cout<<“max=”<max<<“row=”<<row<<“colum=”<<colum;
3---------- 读入下表中值到数组,
分别求各行、各列及表中所
有数之和----------------------------------
#include
using namespace std;
int main()
{ int x[5][4],i,j;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
cin>>x[i][j];
for(j=0;j<3;j++) x[4][j]=0;
for(i=0;i<5;i++) x[i][3]=0;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
{ x[i][3]+=x[i][j];
x[4][j]+=x[i][j];
x[4][3]+=x[i][j];
}
for(i=0;i<5;i++)
{ for(j=0;j<4;j++)
cout<<x[i][j];
cout<<endl; }
return 0;
}
数组