加入收藏 | 设为首页 | 会员中心 | 我要投稿 爱站长网 (https://www.0584.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C语言二维数组的意义 初始化 赋值

发布时间:2022-07-01 12:08:03 所属栏目:语言 来源:互联网
导读:上节讲解的数组可以看作是一行连续的数据,只有一个下标,称为一维数组。在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以确定它在数组中的位置。本节只介绍二维数组,多维数组可由二维数组类推而得到。
  上节讲解的数组可以看作是一行连续的数据,只有一个下标,称为一维数组。在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以确定它在数组中的位置。本节只介绍二维数组,多维数组可由二维数组类推而得到。
  二维数组的定义
  二维数组定义的一般形式是:
  dataType arrayName[length1][length2];
  其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的长度,length2 为第二维下标的长度。
 
  我们可以将二维数组看做一个 Excel 表格,有行有列,length1 表示行数,length2 表示列数,要在二维数组中定位某个元素,必须同时指明行和列。例如:
  int a[3][4];
  定义了一个 3 行 4 列的二维数组,共有 3×4=12 个元素,数组名为 a,即:
  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]
 
  如果想表示第 2 行第 1 列的元素,应该写作 a[2][1]。
 
  【实例1】一个学习小组有 5 个人,每个人有 3 门课程的考试成绩,求该小组各科的平均分和总平均分。
  -- Math C English
  张涛 80 75 92
  王正华 61 65 71
  李丽丽 59 63 70
  赵圈圈 85 87 90
  周梦真 76 77 85
  对于该题目,可以定义一个二维数组 a[5][3] 存放 5 个人 3 门课的成绩,定义一个一维数组 v[3] 存放各科平均分,再定义一个变量 average 存放总平均分。最终编程如下:
  #include <stdio.h>
  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][i]);  //输入每个同学的各科成绩
              sum += a[j][i];  //计算当前科目的总成绩
          }
          v[i]=sum/5;  // 当前科目的平均分
          sum=0;
      }
      average = (v[0] + v[1] + v[2]) / 3;
      printf("Math: %dnC Languag: %dnEnglish: %dn", v[0], v[1], v[2]);
      printf("Total: %dn", average);
      return 0;
  }
  运行结果:
  Input score:
  80 61 59 85 76 75 65 63 87 77 92 71 70 90 85↙
  Math: 72
  C Languag: 73
  English: 81
  Total: 75
 
  程序使用了一个嵌套循环来读取所有学生所有科目的成绩。在内层循环中依次读入某一门课程的各个学生的成绩,并把这些成绩累加起来,退出内层循环(进入外层循环)后再把该累加成绩除以 5 送入 v[i] 中,这就是该门课程的平均分。外层循环共循环三次,分别求出三门课各自的平均成绩并存放在数组 v 中。所有循环结束后,把 v[0]、v[1]、v[2] 相加除以 3 就可以得到总平均分。

(编辑:爱站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!