C语言的二维数组介绍

6214
回复
458034
查看
    [复制链接]
等级头衔

头衔 中级会员

Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25

积分成就
UID
25
威望
102
贡献
50
在线时间
5 小时
注册时间
2014-2-26

发表于 2024-5-24 09:05:04 | 显示全部楼层 |阅读模式
编程交流
编程交流: C语言二维数组A[m][n],这是一个m行,n列的二维数组。
c语言的二维数组
a[p][q]A的第一个元素,即二维数组的行下标从pm,列下标从qn,按“行优先顺序”存储时则元素a[j]的地址计算为:
6448dd590205843f20d8ba1e9e12e51ca55f8209.jpg
LOC(a[j]) = LOC(a[p][q]) + ((i p) * n + (j q)) * t
“列优先顺序”存储时,地址计算为:
LOC(a[j]) = LOC(a[p][q]) + ((j q) * m + (i p)) * t
存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节
二维数组又称为矩阵,行列数相等的矩阵称变方阵。对称矩阵a[j] = a[j],对角矩阵:n阶方阵的所有非零元素都集中在主对角线上.
二维数组在概念上是二维的,但在内存中地址是连续的,也就是说存储器单元是按一维线性排列的。那么,如何在一维存储器中存放二维数组呢?有两种方式:一种是按行排列, 即放完一行之后顺次放入第二行。另一种是按列排列, 即放完一列之后再顺次放入第二列。
C语言中,二维数组是按行排列的。也就是先存放a[0]行,再存放a[1]行,最后存放a[2];每行中的四个元素也是依次存放。数组aint类型,每个元素占用4个字节,整个数组共占用4×(3×4)=48个字节。
【示例】一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。
可设一个二维数组a[5][3]存放五个人三门课的成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量average 为全组各科总平均成绩。编程如下:
#include int main(){ int i, j; //二维数组下标 int sum=0; //当前科目的总成绩 int average; //总平均分 int v[3]; //各科平均分 int a[5][3]; //用来保存每个同学各科成绩的二维数组 printf("Input score:\n"); for(i=0; i<3; i++){ for(j=0; j<5; j++){ scanf("%d", &a[j]); //输入每个同学的各科成绩 sum+=a[j]; //计算当前科目的总成绩 } v=sum/5; // 当前科目的平均分 sum=0; } average =(v[0]+v[1]+v[2])/3; printf("Math: %d\nC Languag: %d\nEnglish: %d\n", v[0], v[1], v[2]); printf("Total:%d\n", average); return 0;}
运行结果:
Input score:
Math: 72
C Languag: 73
English: 81
Total:75
程序中首先用了一个双重循环。在内循环中依次读入某一门课程的各个学生的成绩,并把这些成绩累加起来,退出内循环后再把该累加成绩除以5送入v之中,这就是该门课程的平均成绩。外循环共循环三次,分别求出三门课各自的平均成绩并存放在v数组之中。退出外循环之后,把v[0]v[1]v[2]相加除以3即得到各科总平均成绩。最后按题意输出各个成绩。
二维数组的初始化
二维数组的初始化可以按行分段赋值,也可按行连续赋值。
例如对数组a[5][3],按行分段赋值可写为:
int a[5][3]={ {80,75,92}, {61,65,71}, {59,63,70}, {85,87,90}, {76,77,85} };
按行连续赋值可写为:
int a[5][3]={80, 75, 92, 61, 65, 71, 59, 63, 70, 85, 87, 90, 76, 77, 85};
这两种赋初值的结果是完全相同的。
【示例】求各科平均分和总成绩平均分。
#include int main(){ int i, j; //二维数组下标 int sum=0; //当前科目的总成绩 int average; //总平均分 int v[3]; //各科平均分 int a[5][3]={ {80,75,92}, {61,65,71}, {59,63,70}, {85,87,90}, {76,77,85} }; for(i=0; i<3; i++){ for(j=0; j<5; j++){ sum+=a[j]; //计算当前科目的总成绩 } v=sum/5; // 当前科目的平均分 sum=0; } average =(v[0]+v[1]+v[2])/3; printf("Math: %d\nC Languag: %d\nEnglish: %d\n", v[0], v[1], v[2]); printf("Total:%d\n", average); return 0;}
运行结果:
Math: 72
C Languag: 73
English: 81
Total:75

欢迎加入学客联盟
等级头衔

头衔 高级会员

Rank: 35Rank: 35Rank: 35Rank: 35Rank: 35

积分成就
UID
3970511
威望
95
贡献
95
在线时间
0 小时
注册时间
2021-4-13

发表于 2024-5-24 09:05:05 | 显示全部楼层
抢个位子
欢迎加入学客联盟
回复 支持 反对

使用道具 举报

等级头衔

头衔 高级会员

Rank: 35Rank: 35Rank: 35Rank: 35Rank: 35

积分成就
UID
4034178
威望
113
贡献
113
在线时间
0 小时
注册时间
2021-10-28

发表于 2024-5-24 09:05:12 | 显示全部楼层
提高技术就是我梦想的未来
欢迎加入学客联盟
回复 支持 反对

使用道具 举报

等级头衔

头衔 高级会员

Rank: 35Rank: 35Rank: 35Rank: 35Rank: 35

积分成就
UID
3742710
威望
110
贡献
110
在线时间
0 小时
注册时间
2019-2-11

发表于 2024-5-24 09:05:20 | 显示全部楼层
相信有位置在
欢迎加入学客联盟
回复 支持 反对

使用道具 举报

等级头衔

头衔 高级会员

Rank: 35Rank: 35Rank: 35Rank: 35Rank: 35

积分成就
UID
4071019
威望
106
贡献
106
在线时间
0 小时
注册时间
2021-11-8

发表于 2024-5-24 09:05:28 | 显示全部楼层
路过
欢迎加入学客联盟
回复 支持 反对

使用道具 举报

等级头衔

头衔 高级会员

Rank: 35Rank: 35Rank: 35Rank: 35Rank: 35

积分成就
UID
3899567
威望
129
贡献
129
在线时间
0 小时
注册时间
2021-3-19

发表于 2024-5-24 09:05:35 | 显示全部楼层
好东西
欢迎加入学客联盟
回复 支持 反对

使用道具 举报

等级头衔

头衔 高级会员

Rank: 35Rank: 35Rank: 35Rank: 35Rank: 35

积分成就
UID
6084182
威望
96
贡献
96
在线时间
0 小时
注册时间
2023-6-19

发表于 2024-5-24 09:05:42 | 显示全部楼层
学到老,好东西留在手中
欢迎加入学客联盟
回复 支持 反对

使用道具 举报

等级头衔

头衔 高级会员

Rank: 35Rank: 35Rank: 35Rank: 35Rank: 35

积分成就
UID
5101065
威望
128
贡献
128
在线时间
0 小时
注册时间
2022-3-26

发表于 2024-5-24 09:05:49 | 显示全部楼层
为终身学习做好准备
欢迎加入学客联盟
回复 支持 反对

使用道具 举报

等级头衔

头衔 高级会员

Rank: 35Rank: 35Rank: 35Rank: 35Rank: 35

积分成就
UID
4936092
威望
110
贡献
110
在线时间
0 小时
注册时间
2022-3-7

发表于 2024-5-24 09:05:56 | 显示全部楼层
抢个位子
欢迎加入学客联盟
回复 支持 反对

使用道具 举报

等级头衔

头衔 高级会员

Rank: 35Rank: 35Rank: 35Rank: 35Rank: 35

积分成就
UID
5600885
威望
115
贡献
115
在线时间
0 小时
注册时间
2022-5-15

发表于 2024-5-24 09:06:04 | 显示全部楼层
为终身学习做好准备
欢迎加入学客联盟
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电脑技术交流学习
132-3591-5703
周一至周五 9:00-18:00
意见反馈:admin@cnxklm.com

扫一扫访问手机版

Powered by NST! X3.4© 2001-2021技术支持( 闽ICP备14006427号 闽公网安备35090202000370号)|意见建议