大海老师
频道主
C++第十二讲——二维数组
实践任务
二维数组的定义
一维数组是只有一个下标的数组,而二维数组是含有两个下标的数组,第一个下标代表行下标,第二个下标代表列下标。
如果一维数组只有一行序列,那么二维数组就可以看成一个矩阵或一个表格。
与定义一维数组的方法类似,定义二维数组的一般形式为:数据类型 数组名 [ 常量表达式1][ 常量表达式2]。
二维数组的初始化
(1)分行给二维数组赋值,
例如“int a[3][5]={{0,1,2,3,4},{5,6,7,8,9},{10,11,12,13,14}}”。
(2)可以将所有数据写在一个“{}”内,按数组排列的顺序对各元素赋值。
例如“int a[3][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}”。
(3)可以对部分元素赋值。只对各行第1列(序号为0的列)的元素赋初始值,其余元素的值自动为0。
例如“int a[3][5]={{1},{2},{3}}”。
二维数组的访问
二维数组的元素访问与一维数组类似,区别仅在于二维数组的元素访问必须给出两个下标。
其形式为:数据类型 数组名 [ 下标1][ 下标2]。
需要注意的是,每个下标表达式的值不能超出该下标所指定的范围,否则会导致数组越界。
编程练习
练习任务:试卷打分。
假设本次口算试卷中有5道题目,每答对 1 题得 20 分,现在小明共有4份试卷。请编程实现对这 4 份试卷的打分。
int exams[4][5]={{90,60,30,50,77},
{90,65,30,50,77},
{92,60,30,55,70},
{90,60,33,55,77}};
int ans[5]={90,60,30,50,77},i,j,s;
for(i=0;i<4;i++)
{
s=0;
for(j=0;j<5;j++)
{
// 如果学生填写的答案与标准答案相同,则正确个数加1
if(exams[i][j]==ans[j]) s++;
}
// 满分是 100 分,所以学生分数为正确个数的 20 倍,输出学生的考试分数
cout<<" 第 "<<i+1<<" 个学生的分数是 "<< s*20<<endl;
{
system("pause");
return 0;
}
实践任务:计算跳绳比赛的最好成绩
3 名学生比赛一分钟跳绳,每人跳 4 次,所跳结果存放于数组 a 中,编程统计出每人的最好成绩分别是多少。
杨辉三角是二项式系数在三角形中的一种几何排列,如图所示。请完善程序使其能够输出杨辉三角形的前 10 行。
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int i,j,a[11][11];
a[1][1]=1;
for(i=2;i<=10;i++)
{
a[i][1]=1; ; // 每一行的首尾值为 1
for(j=2;j<= ;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];// 每个数等于上一行的两个数之和
}
for(i=1;i<=10;i++)
{
if ( i!=10 ) cout<<setw( 30-3*i )<<" ";// 每行的起始位置所需空格数量
for (j=1;j<=i;j++) cout<<setw(6)<< ;
cout<<endl;
}
return 0;
}
- 下载图片
- 复制图片
2024-08-18
浏览124
c++算法
登录后评论
1
评论
1