二维数组的初始化和应用
需积分: 19 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]。
永不放弃yes
- 粉丝: 793
- 资源: 2万+
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器