c语言二维数组定义

一维数组只有一个下标,,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。本小节只介绍二维数组,多维数组可由二维数组类推而得到。

二维数组定义的一般形式是:类型说明符数组名[常量表达式1][常量表达式2]

其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度。例如:int a[3][4];

说明了一个三行四列的数组,数组名为a,其下标变量的类型为整型。该数组的下标变量共有3×4个,即:

a[0][0],a[0][1],a[0][2],a[0][3]

a[1][0],a[1][1],a[1][2],a[1][3]

a[2][0],a[2][1],a[2][2],a[2][3]

二维数组在概念上是二维的,即是说其下标在两个方向上变化,下标变量在数组中的位置也处于一个平面之中,而不是象一维数组只是一个向量。但是,实际的硬件存储器却是连续编址的,也就是说存储器单元是按一维线性排列的。如何在一维存储器中存放二维数组,可有两种方式:一种是按行排列,即放完一行之后顺次放入第二行。另一种是按列排列,即放完一列之后再顺次放入第二列。

在C语言中,二维数组是按行排列的。即,先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有四个元素也是依次存放。由于数组a说明为int类型,该类型占两个字节的内存空间,所以每个元素均占有两个字节)。

二维数组元素的引用

二维数组的元素也称为双下标变量,其表示的形式为:

数组名[下标][下标]

其中下标应为整型常量或整型表达式。例如:

a[3][4]

表示a数组三行四列的元素。

下标变量和数组说明在形式中有些相似,但这两者具有完全不同的含义。数组说明的方括号中给出的是某一维的长度,即可取下标的最大值;而数组元素中的下标是该元素在数组中的位置标识。前者只能是常量,后者可以是常量,变量或表达式。

【例7-6】一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。

--张王李赵周

Math8061598576

C7565638777

Foxpro9271709085

可设一个二维数组a[5][3]存放五个人三门课的成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量average 为全组各科总平均成绩。编程如下:

#include 《stdio.h》int main(void){ int i,j,s=0,average,v[3],a[5][3]; printf(“input score\n”); for(i=0;i《3;i++){ for(j=0;j《5;j++){ scanf(“%d”,&a[j][i]); s=s+a[j][i]; } v[i]=s/5; s=0; } average =(v[0]+v[1]+v[2])/3; printf(“math:%d\nc languag:%d\ndbase:%d\n”,v[0],v[1],v[2]); printf(“total:%d\n”, average ); return 0;}

程序中首先用了一个双重循环。在内循环中依次读入某一门课程的各个学生的成绩,并把这些成绩累加起来,退出内循环后再把该累加成绩除以5送入v[i]之中,这就是该门课程的平均成绩。外循环共循环三次,分别求出三门课各自的平均成绩并存放在v数组之中。退出外循环之后,把v[0]、v[1]、v[2]相加除以3即得到各科总平均成绩。最后按题意输出各个成绩。

c语言二维数组的规则

定义二维数组应注意以下几点:

1:二维数组说明符中必须有用两个方括号括起来的常量表达式,常量表达式的值只能是正整数。可以把“常量表达式1”看成是矩阵的行数,把“常量表达式2”看成是矩阵的列数。

2:二维数组的元素在内存中占一系列连续的存储单元。数组元素在内存中的排列顺序是先存放第0行的元素,在存放第一行的元素,以此类推。称这种存放顺序为“按行存放”。

3:可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若干个元素的一维数组。

c语言二维数组相关程序设计,c语言二维数组定义及其规则详解相关推荐

  1. 编程题50 习题6-8 单词首字母大写【浙大版《C语言程序设计(第4版)》题目集 详解教程】

    编程题50 习题6-8 单词首字母大写[浙大版<C语言程序设计(第4版)>题目集 详解教程] 原题链接:习题6-8 单词首字母大写 (pintia.cn) 参考答案 #include< ...

  2. 运维之道 | Nginx rewrite 规则详解

    Nginx rewrite 规则详解 一.rewrite规则概念 rewirte 规则也称为规则重写,主要功能是实现浏览器访问 HTTP URL 的跳转,其正则表达式是基于 Perl 语言.通常而言, ...

  3. Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解

    Spring MVC 学习总结(二)--控制器定义与@RequestMapping详解 目录 一.控制器定义 1.1.实现接口Controller定义控制器 1.2.使用注解@Controller定义 ...

  4. C语言结构体中定义函数指针详解

    C语言结构体中定义函数指针详解 结构体指针函数应用场景之一--驱动程序编写 结构体的一些基本用法 形式1:先定义结构体类型,再定义变量 形式2:在定义类型的同时定义变量 形式3:直接定义变量,用无名结 ...

  5. R语言rms包生存分析之限制性立方样条(RCS, Restricted cubic spline)分析详解实战:拟合连续性自变量和事件风险之间的关系:基于survival包lung数据

    R语言rms包生存分析之限制性立方样条(RCS, Restricted cubic spline)分析详解实战:拟合连续性自变量和事件风险之间的关系:基于survival包lung数据 目录

  6. C语言课程建设总体思路,程序设计C语言课程教学资源建设探索

    针对程序设计C语言教学缺乏活力和教学效果不明显的问题,本文介绍了程序设计C语言课程教学的现状,分析了教学改革面临的主要问题,提出了程序设计C语言教学改革的基本方案,并论述了在研究型教学思路下,如何重点 ...

  7. python二维图颜色函数_通过python改变图片特定区域的颜色详解

    通过python改变图片特定区域的颜色详解 首先让我祭出一张数学王子高斯的照片,这位印在德国马克上的神人有多牛呢? 他是近代数学的奠基人之一,与牛顿, 阿基米德并称顶级三大数学家,随便找一个编程语言的 ...

  8. c语言第四章循环程序设计,C语言程序设计教程第4章-循环结构程序设计

    <C语言程序设计教程第4章-循环结构程序设计>由会员分享,可在线阅读,更多相关<C语言程序设计教程第4章-循环结构程序设计(42页珍藏版)>请在人人文库网上搜索. 1.C语言程 ...

  9. 案例:图书管理——补充知识(数组相关API)||补充知识(数组响应式变化)

    案例:图书管理 Vue数组操作 1.变异方法:会影响数组的原始数据的变化. 2.替换数组:不会影响原始的数组数据,而是形成一个新的数组. <!DOCTYPE html> <html ...

  10. 指针数组,数组指针,指针函数,函数指针,二级指针详解

    先看个简单的:char *p,这定义了一个指针,指针指向的数据类型是字符型,char  *(p)定义了一个指针P: char *p[4], 为指针数组,由于[]的优先级高于*,所以p先和[]结合,p[ ...

最新文章

  1. Swagger3.0 天天刷屏,真的香吗?
  2. 确认过眼神,这就是你要的路由库
  3. largest number java_将给定的数组组成最大的数 Largest Number
  4. VS2013中使用git发布解决方案master分支的时候出现错误
  5. 特定于数据中心的人工智能完成任务的速度可以提高两倍
  6. 点到直线的投影公式_2021高考复习资料:高中数学必备公式与知识点汇总
  7. [zz]C#中的Type类和Assembly类
  8. 持续集成工具集之五 使用Email Extension Plugin插件
  9. 使用postman模拟上传文件到springMVC的坑:the request was rejected because no multipart boundary was found...
  10. 洛谷P3952 时间复杂度
  11. 【程序源代码】番茄时间小程序
  12. 【读书笔记】大数据 数据挖掘 相关
  13. Django自学笔记之admin中设置App名称为中文
  14. Caffe2 - (二十四) Detectron 之 utils 函数(2)
  15. 《认识突围:做复杂时代的明白人》读书笔记和自我理解感受
  16. 扫拖地机器人预留_扫地机器人需要注意几个点?拖扫组合受追捧!
  17. Linux中安装IE和Office等软件(转)
  18. Tomcat和Was服务器中文乱码问题总结
  19. 一般业务系统的数据字典表结构
  20. LED、CCFL、TFT屏幕三者的区别

热门文章

  1. web前端数据可视化控件
  2. 内存颗粒和闪存颗粒的区别_内存颗粒及频率知识,你真的清楚吗?
  3. matlab数学实验报告面积,MATLAB插值实验报告数学实验
  4. 扩展卡尔曼滤波(EKF)
  5. idea中按住ctrl+滚轮改变字体大小
  6. 5G NR首版标准R15解读
  7. 应用软件漏洞利用分布
  8. PS给证件照换背景颜色
  9. 学习:Ubuntu14.04编译caffe问题记录
  10. 第35章 GoogleAuthenticator插件项的定义实现