二维数组的初始化和应用

需积分: 19 4 下载量 128 浏览量 更新于2024-07-13 收藏 294KB PPT 举报
"二维数组的初始化和程序设计" 本节主要讲解了二维数组的初始化和程序设计,通过实例程序,展示了二维数组的使用和优点。 **二维数组的初始化** 二维数组的初始化和一维数组类似,可以将每一行分开来写在各自的括号里,也可以把所有数据写在一个括号里。例如: ``` int direct[4][2] = {{1,0},{0,1},{-1,0},{0,-1}} int direct[4][2] = {1,0,0,1,-1,0,0,-1} ``` **二维数组程序设计** 下面是一个使用二维数组的程序设计实例: ```c #include<cstdio> #include<iostream> #include<iomanip> const int n=3; using namespace std; int a[n+1][n+1]; int main() { for (int i=1; i<=n; ++i) { for (int j=1; j<=n; ++j) cin>>a[i][j]; getchar(); } for (int i=1; i<=n; ++i) { for (int j=1; j<=n; ++j) cout<<setw(5)<<a[j][i]; cout<<endl; } return 0; } ``` 该程序的输入为: ``` 2 1 3 3 3 1 1 2 1 ``` 程序的输出为: ``` 2 3 1 1 3 2 3 1 1 ``` **为什么要使用数组** 通过前面的学习,我们已经可以编写程序来解决各种相当复杂的问题,但是当需要处理的数据比较多时,仅依靠前面的知识是不够的,即使简单的问题也可能需要比较复杂的程序来处理。 例如,输入50个学生的某门课程的成绩,打印出低于平均分的学生序号与成绩。可以使用简单变量来累加读入的50个成绩求出学生的总分,进而求出平均分。但是,因为只有读入最后一个学生的分数后才能求得平均分,并且要求打印出低于平均分的学生序号和成绩,故必须把50个学生的成绩都保留起来,然后逐个和平均分比较,把低于平均分的成绩打印出来。 如果,用简单变量a1,a2,…,a50存储这些数据,要用50个变量保存输入的数据,程序片断如下: ``` cin>>a1>>a2>>…>>a10; … cin>>a41>>a42>>…>>a50; ``` 可以看出,这样的程序是多么繁琐。如果说处理的数据规模达到成千上万,上面的例子单单读入就会异常复杂,电脑的优势没有得到体现。 **数组的优点** 从以上的讨论可以看出,如果只使用简单变量处理大量数据,就必须使用大量只能单独处理的变量,即使是简单问题也需要编写冗长的程序。 选手们可能已经看出,我们需要把一大批具有相同性质的数据组合成一个新类型的变量,可以用简单的程序(比如循环50次)对这个新变量的各个分量进行相同的处理,每个分量仍然保留单个变量的所有性质。 如果能像数学中使用下标变量ai形式表示这50个数,则问题就容易实现。在C++语言中,具有下标性质的数据类型是数组。如果使用数组,上面的问题就变得十分简单、清晰。例如,读入50个学生的成绩,只需写如下语句即可: ``` for(int i=1; i<=50; ++i) cin>>a[i]; ``` 在这里引用了带下标的变量(分量变量称为数组元素)a[i]来代替a1,a2…,a50,方括号中的i称为下标,当循环变量i=1时a[i]就是a[1];当i=2时a[i]就是a[2]……;当i=50时a[i]就是a[50]。输入的时候,让i从1变化到50,循环体内输入语句中的a[i]。