第 4章 数 组
4.1 一维数组的定义和数组元素的引用
4.2 二维数组的定义和数组元素的引用
4.3 字 符 数 组
4.1 一维数组的定义和数组元素的引用
4.1.1 一维数组的定义把若干个同类型的数据线性的组合在一起,
就构成一维数组 。 在使用一维数组之前必须先定义 。 在定义的部分要说明数组的数据类型,数组名和数组元素的个数 。 定义一维数组的一般格式为:
<数据类型 > <数组名 >[n]
在定义一维数组时要注意以下几点:
( 1) 数据类型一般指的是该数组元素的类型 。
( 2) 数组名的命名规则要遵循 C++关于标识符的命名规则 。
( 3) 数组的元素个数,就是数组长度 。
注意,数组长度是用方括号括起来的一个整数,不能用圆括号 。
( 4) 必须要说明数组的长度,且这个长度要用一个确定的正整数来表示 。
( 5) 一次也可以说明多个同类型数组 。
4.1.2 一维数组的初始化
( 1) 同基本类型的变量一样,可以在定义数组的同时对其进行初始化 。
( 2) 在定义数组时既可以对所有元素进行初始化,也可以只对其中的一部分元素进行初始化 。
( 3) 要使一个数组中全部元素的值为 0,
可以有如下定义方法:
int a[4]={ };
int a[4]={0,0,0,0};
int a[4]={0};
( 4) 全部数组元素赋初始值时,可以不指定数组长度 。 计算机会根据初始化的数组元素的个数自动分配存贮空间 。
( 5) 利用 for循环语句赋初始值 。
4.1.3 一维数组元素的引用数组元素引用的格式为:
数组名 [下标 ]
其中,下标可以是整型常量或整型表达式 。
【 例 4.1】 求出一个数组 a[8],使 a[i]的值为下标值的平方,然后按逆序输出 。
#include<iostream.h>
void main()
{
int i,a[8];
for (i=0;i<=7;i++)
a[i]=i*i;
//利用 for语句给每个数组元素赋初值 。
for (i=7;i>=0;i--)
cout<<a[i]<<" ";
//利用下标,对数组元素进行引用 。
cout<<endl;
}
运行结果如下:
49 36 25 16 9 4 1 0
4.1.4 一维数组的使用
【 例 4.2】 从键盘上输入任意 4个整数赋给数组,显示该数组,最后计算并显示该数组的累加和与平均值 。
#include<iostream.h>
void main()
{
int a[4],i,sum=0;
//声明数组和变量
double avg;
for (i=0;i<4;i++)
{
cout<<"a["<<i<<"]=";
//利用 for语句给数组赋值 。
cin>>a[i];
}
//直接显示数组元素
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<"
"<<a[3]<<" "<<endl;
for (i=0;i<4;i++)
//利用 for循环显示数组元素的值
cout<<a[i]<<" ";
cout<<endl;
sum=a[0]+a[1]+a[2]+a[3];
//计算数组元素之和,并显示计算结果
cout<<"sum="<<sum<<endl;
sum=0;
for (i=0;i<4;i++)
sum=a[i]+sum;
//利用 for语句求出和 。
cout<<"sum="<<sum<<endl;
avg=sum/4.0;
cout<<"avg="<<avg<<endl;
}
运行结果为:
a[0]=1
a[1]=3
a[2]=5
a[3]=7
1 3 5 7
1 3 5 7
sum=16
sum=16
avg=4
4.2 二维数组的定义和数组元素的引用
4.2.1 二维数组的定义二维数组在定义时也要说明数组的数据类型,数组名和数组元素的个数 。 二维数组定义的一般形式为:
<数组类型 > <数组名 >[m][n]
4.2.2 二维数组元素的初始化二维数组元素的初始化方法很多,常用的有以下几种方法:
( 1) 对二维数组元素赋初值,以每行为一组 。
( 2) 所有的数据写在一个花括弧内,根据数组排列的顺序以及数组的行数和列数,
计算机会自动给各数组元素赋初值 。
( 3) 可以只给部分数组元素赋初始值
( 4) 可以对某一行中的某一元素赋初值,
也可以对某一行不进行赋值 。
( 5) 如果对全部数组元素赋初始值,则定义数组时第一维的长度,可以不指定,但第二维的长度不能省略 。
4.2.3 二维数组元素的引用引用二维数组元素的格式为:
<数组名 > [<行下标 >][<列下标 >]
注意:
( 1) 不要把 int a[3][2] 写成 int a[3,2]。
( 2) 下标值要在已定义的数组的最大范围内,即不要越界 。
4.2.4 二维数组的使用
【 例 4.5】 定义一个二维数组 a[2][2],对它进行初始化,并输出所有的初始值 。 求出
a[0][1]+[1][0]。
#include<iostream.h>
void main()
{
int a[2][2]={{23,34},{45,67}};
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
cout<<a[i][j]<<" ";
cout<<endl;
int sum;
sum=a[0][1]+a[1][0];
cout<<" a[0][1]+a[1][0]="<<sum<<endl;
}
程序执行的结果是:
23 34 45 67
a[0][1]+a[1][0]=79
4.3 字 符 数 组
4.3.1 字符数组的定义及初始化字符数组是数据类型为字符类型的数组,
它用来存放字符型数据,其中每一个数组元素对应一个字符 。
字符数组定义的格式为:
char 数组名 [n];
字符数组的初始化一般有如下两种方法:
( 1) 逐个字符赋给数组中的元素 。
【 例 4.7】 逐个字符初始化字符数组 。
#include<iostream.h>
void main()
{
//逐个字符对字符数组初始化
char
a[13]={'H','e','l','l','o',',','W','o','r','l','d','!'};
cout<<a<<endl;
//把字符数组作为整体进行输出,直到遇到
'\0'
cout<<a[10]<<endl;
//输出字符数组的一个元素
}
运行程序,输出结果为:
Hello,World!
d
( 2) 对整个字符数组赋初值 。
【 例 4.8】 对整个字符数组初始化 。
#include<iostream.h>
void main()
{
char a[13]="Hello,World!";
cout<<a<<endl;
cout<<a[10]<<endl;
}
程序的结果如下,
Hello,World!
d
4.3.2 字符数组的应用
【 例 4.9】 计算一个字符串 ( 无空格 ) 中字符的个数 。
#include<iostream.h>
#include<string.h>
void main()
{
char a[100];
cin>>a;
char *pt=a;
int i;
for(i=0;*pt!='\0';++pt)
++i;
cout<<"这一串字符中共有 "<<i<<"个字符
"<<endl;
}
【 例 4.10】 编程求出一个二维字符数组里为 ‘ a’的元素个数 。
#include<iostream.h>
#include<string.h>
void reada(char a[5][4]);
void main()
{
char a[5][4];
int i,j,number=0;
reada(a);
for(i=0;i<5;i++)
for(j=0;j<4;j++)
{
if(a[i][j]!='a')
continue;
number++;
}
cout<<"这个字符串中有,"<<number<<"
个 a"<<endl;
}
void reada(char a[5][4])
{
int i,j;
cout<<"请输入字符串,"<<endl;
for(i=0;i<5;i++)
for(j=0;j<4;j++)
cin>>a[i][j];
}
程序的执行结果为:
请输入字符串:
sfdsgfaahsfyhsfdahdg
这个字符串中有,3个 a
4.1 一维数组的定义和数组元素的引用
4.2 二维数组的定义和数组元素的引用
4.3 字 符 数 组
4.1 一维数组的定义和数组元素的引用
4.1.1 一维数组的定义把若干个同类型的数据线性的组合在一起,
就构成一维数组 。 在使用一维数组之前必须先定义 。 在定义的部分要说明数组的数据类型,数组名和数组元素的个数 。 定义一维数组的一般格式为:
<数据类型 > <数组名 >[n]
在定义一维数组时要注意以下几点:
( 1) 数据类型一般指的是该数组元素的类型 。
( 2) 数组名的命名规则要遵循 C++关于标识符的命名规则 。
( 3) 数组的元素个数,就是数组长度 。
注意,数组长度是用方括号括起来的一个整数,不能用圆括号 。
( 4) 必须要说明数组的长度,且这个长度要用一个确定的正整数来表示 。
( 5) 一次也可以说明多个同类型数组 。
4.1.2 一维数组的初始化
( 1) 同基本类型的变量一样,可以在定义数组的同时对其进行初始化 。
( 2) 在定义数组时既可以对所有元素进行初始化,也可以只对其中的一部分元素进行初始化 。
( 3) 要使一个数组中全部元素的值为 0,
可以有如下定义方法:
int a[4]={ };
int a[4]={0,0,0,0};
int a[4]={0};
( 4) 全部数组元素赋初始值时,可以不指定数组长度 。 计算机会根据初始化的数组元素的个数自动分配存贮空间 。
( 5) 利用 for循环语句赋初始值 。
4.1.3 一维数组元素的引用数组元素引用的格式为:
数组名 [下标 ]
其中,下标可以是整型常量或整型表达式 。
【 例 4.1】 求出一个数组 a[8],使 a[i]的值为下标值的平方,然后按逆序输出 。
#include<iostream.h>
void main()
{
int i,a[8];
for (i=0;i<=7;i++)
a[i]=i*i;
//利用 for语句给每个数组元素赋初值 。
for (i=7;i>=0;i--)
cout<<a[i]<<" ";
//利用下标,对数组元素进行引用 。
cout<<endl;
}
运行结果如下:
49 36 25 16 9 4 1 0
4.1.4 一维数组的使用
【 例 4.2】 从键盘上输入任意 4个整数赋给数组,显示该数组,最后计算并显示该数组的累加和与平均值 。
#include<iostream.h>
void main()
{
int a[4],i,sum=0;
//声明数组和变量
double avg;
for (i=0;i<4;i++)
{
cout<<"a["<<i<<"]=";
//利用 for语句给数组赋值 。
cin>>a[i];
}
//直接显示数组元素
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<"
"<<a[3]<<" "<<endl;
for (i=0;i<4;i++)
//利用 for循环显示数组元素的值
cout<<a[i]<<" ";
cout<<endl;
sum=a[0]+a[1]+a[2]+a[3];
//计算数组元素之和,并显示计算结果
cout<<"sum="<<sum<<endl;
sum=0;
for (i=0;i<4;i++)
sum=a[i]+sum;
//利用 for语句求出和 。
cout<<"sum="<<sum<<endl;
avg=sum/4.0;
cout<<"avg="<<avg<<endl;
}
运行结果为:
a[0]=1
a[1]=3
a[2]=5
a[3]=7
1 3 5 7
1 3 5 7
sum=16
sum=16
avg=4
4.2 二维数组的定义和数组元素的引用
4.2.1 二维数组的定义二维数组在定义时也要说明数组的数据类型,数组名和数组元素的个数 。 二维数组定义的一般形式为:
<数组类型 > <数组名 >[m][n]
4.2.2 二维数组元素的初始化二维数组元素的初始化方法很多,常用的有以下几种方法:
( 1) 对二维数组元素赋初值,以每行为一组 。
( 2) 所有的数据写在一个花括弧内,根据数组排列的顺序以及数组的行数和列数,
计算机会自动给各数组元素赋初值 。
( 3) 可以只给部分数组元素赋初始值
( 4) 可以对某一行中的某一元素赋初值,
也可以对某一行不进行赋值 。
( 5) 如果对全部数组元素赋初始值,则定义数组时第一维的长度,可以不指定,但第二维的长度不能省略 。
4.2.3 二维数组元素的引用引用二维数组元素的格式为:
<数组名 > [<行下标 >][<列下标 >]
注意:
( 1) 不要把 int a[3][2] 写成 int a[3,2]。
( 2) 下标值要在已定义的数组的最大范围内,即不要越界 。
4.2.4 二维数组的使用
【 例 4.5】 定义一个二维数组 a[2][2],对它进行初始化,并输出所有的初始值 。 求出
a[0][1]+[1][0]。
#include<iostream.h>
void main()
{
int a[2][2]={{23,34},{45,67}};
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
cout<<a[i][j]<<" ";
cout<<endl;
int sum;
sum=a[0][1]+a[1][0];
cout<<" a[0][1]+a[1][0]="<<sum<<endl;
}
程序执行的结果是:
23 34 45 67
a[0][1]+a[1][0]=79
4.3 字 符 数 组
4.3.1 字符数组的定义及初始化字符数组是数据类型为字符类型的数组,
它用来存放字符型数据,其中每一个数组元素对应一个字符 。
字符数组定义的格式为:
char 数组名 [n];
字符数组的初始化一般有如下两种方法:
( 1) 逐个字符赋给数组中的元素 。
【 例 4.7】 逐个字符初始化字符数组 。
#include<iostream.h>
void main()
{
//逐个字符对字符数组初始化
char
a[13]={'H','e','l','l','o',',','W','o','r','l','d','!'};
cout<<a<<endl;
//把字符数组作为整体进行输出,直到遇到
'\0'
cout<<a[10]<<endl;
//输出字符数组的一个元素
}
运行程序,输出结果为:
Hello,World!
d
( 2) 对整个字符数组赋初值 。
【 例 4.8】 对整个字符数组初始化 。
#include<iostream.h>
void main()
{
char a[13]="Hello,World!";
cout<<a<<endl;
cout<<a[10]<<endl;
}
程序的结果如下,
Hello,World!
d
4.3.2 字符数组的应用
【 例 4.9】 计算一个字符串 ( 无空格 ) 中字符的个数 。
#include<iostream.h>
#include<string.h>
void main()
{
char a[100];
cin>>a;
char *pt=a;
int i;
for(i=0;*pt!='\0';++pt)
++i;
cout<<"这一串字符中共有 "<<i<<"个字符
"<<endl;
}
【 例 4.10】 编程求出一个二维字符数组里为 ‘ a’的元素个数 。
#include<iostream.h>
#include<string.h>
void reada(char a[5][4]);
void main()
{
char a[5][4];
int i,j,number=0;
reada(a);
for(i=0;i<5;i++)
for(j=0;j<4;j++)
{
if(a[i][j]!='a')
continue;
number++;
}
cout<<"这个字符串中有,"<<number<<"
个 a"<<endl;
}
void reada(char a[5][4])
{
int i,j;
cout<<"请输入字符串,"<<endl;
for(i=0;i<5;i++)
for(j=0;j<4;j++)
cin>>a[i][j];
}
程序的执行结果为:
请输入字符串:
sfdsgfaahsfyhsfdahdg
这个字符串中有,3个 a