内容正文:
数组、指针和引用
人们经常需要使用大量集中在一起的数据来工作,C++通过数组处理来满足这种要求。数组是一组具有相同数据类型的数据的有序集合,可以是一维的,也可以是多维的,许多重要的应用都是基于数组的。
C++具有在程序运行时获得变量地址和操纵地址的能力,这种用来操纵地址的特殊类型就是指针。指针可以用于数组,可以用做函数参数,也可以用于内存访问和堆内存操作。指针的功能最强,但也最危险。
使用引用可以确定把参数传递给函数的方法。通过引用的学习,要求正确掌握引用的语法,引用作为函数参数的方法,正确使用引用,明确引用与指针的区别。
5.1 数组
数组是一组具有相同数据类型的数据的有序集合。数组是一个存储单元,元素的值就存放在其中。数组的数据类型也就是它的元素的数据类型,如整型数组,其中的每个元素都存储一个整数。数组的下标用于标识数组元素的位置。根据元素排列方式的不同,数组可分为一维数组、二维数组等。不同维数的数组,其下标访问方式也不同。通过数组的学习,要求理解数组下标含义,掌握数组初始化的方法,学会把数组作为函数的参数,学会二维数组的使用。
5.1.1 一维数组
Add your text in here
Click to add Text
冒泡法排序
案例引入
从键盘输入10个整数到一个一维数组中,使用冒泡法从小到大排序,输出排序结果。要求将每趟排序的结果输出。
5.1.1 一维数组
#include <iostream.h>
int main(int argc, char* argv[])
{
int a[10];
int i,j,k,temp;
cout<<"请输入10个整数:
";
for(i=0;i<10;i++) //输入10个整数
cin>>a[i];
for(i=0;i<9;i++) //使用冒泡算法从小到大排序
{
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
cout<<"第"<<i+1<<"趟排序结果:";
for(k=0;k<=9;k++) //输出每趟排序结果
cout<<a[k]<<" ";
cout<<endl;
}
cout<<"排序后为:
";
for(i=0;i<=9;i++) //输出排序完成后结果
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
源代码展示
5.1.1 一维数组
运行结果
5.1.1 一维数组
程序分析
在a[0]~a[9]中,依次比较两个相邻元素的值,若a[j]>a[j+1],则交换a[j]与a[j+1],j的值为0,1,2,…,8。经过这样一趟冒泡,将这10个数中最大的数放在了a[9]中。
1
5.1.1 一维数组
程序分析
第1趟比较结束后,将10个数中的最大数交换到a[9],然后对a[0]~a[8]再进行一趟冒泡,又将该范围内的最大值换到了a[8]中。
2
依次进行下去,最多只要进行9趟冒泡,就可完成排序。
3
如果在某趟冒泡过程中没有交换相邻两个数的值,则说明排序已完成,可以提前结束排序。
4
知识讲解
一维数组的定义
一维数组的初始化
类型说明符 数组名[常量表达式];
例如:
int a[10];
对数组元素的初始化可以在数组定义时进行,例如:
int a[10]={0,1,2,3,4,5,6,7,8,9};
即将数组元素的初值依次放在一对花括号内。
经过上面的定义和初始化后,a[0]=0,a[1]=1,a[2]=2……依次类推。
当然,也可以只给一部分元素赋值,例如:
int a[10]={0,1,2,3,4};
5.1.2 二维数组
Add your text in here
Click to add Text
实现矩阵的转置
案例引入
将用二维数组表示的矩阵的行和列互换,如下面一个2×3的矩阵:
转置后变成3×2的矩阵:
#include <iostream.h>
int main(int argc, char* argv[])
{
int a[2][3];
int b[3][2];
int i,j;
cout<<"请输入2×3矩阵的值:
";
for(i=0;i<