二维数组的初始化和应用
需积分: 19 16 浏览量
更新于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]。
2024-03-24 上传
2021-07-15 上传
2021-06-13 上传
点击了解资源详情
点击了解资源详情
永不放弃yes
- 粉丝: 912
- 资源: 2万+
最新资源
- 深入了解Django框架:Python中的网站开发利器
- Spring Boot集成框架示例:深入理解与实践
- 52pojie.cn捷速OCR文字识别工具实用评测
- Unity实现动态水体涟漪效果教程
- Vue.js项目实践:饭否每日精选日历Web版开发记
- Bootbox:用Bootstrap实现JavaScript对话框新体验
- AlarStudios:Swift开发教程及资源分享
- 《火影忍者》主题新标签页壁纸:每日更新与自定义天气
- 海康视频H5player简易演示教程
- -roll20脚本开发指南:探索roll20-master包-
- Xfce ClassicLooks复古主题更新,统一Linux/FreeBSD外观
- 自建物理引擎学习刚体动力学模拟
- Python小波变换工具包pywt的使用与实例
- 批发网导航程序:自定义模板与分类标签
- 创建交互式钢琴键效果的JavaScript库
- AndroidSunat应用开发技术栈及推介会议