5.222维数组元素的引用 引用2维数组元素的形式为: 数组名行下标表达式列下标表达式 1.“行下标表达式”和“列下标表达式”,都应是 整型表达式或符号常量 2.“行下标表达式”和“列下标表达式”的值,都 应在已定义数组大小的范围内。假设有数组x[34,则可 用的行下标范围为0~2,列下标范围为0~3。 3.对基本数据类型的变量所能进行的操作,也都适 于相同数据类型的2维数组元素
返回本章首页 下一页 上一页 5.2.2 2维数组元素的引用 引用2维数组元素的形式为: 数组名[行下标表达式][列下标表达式] 1.“行下标表达式”和“列下标表达式” ,都应是 整型表达式或符号常量。 2.“行下标表达式”和“列下标表达式”的值,都 应在已定义数组大小的范围内。假设有数组x[3][4],则可 用的行下标范围为0~2,列下标范围为0~3。 3.对基本数据类型的变量所能进行的操作,也都适 合于相同数据类型的2维数组元素
5.2.32维数组元素的初始化 1.按行赋初值 数据类型数组名行常量表达式列常量表达式={第0行初值 表},{第1行初值表},…,{最后1行初值表}}; 赋值规则:将“第0行初值表”中的数据,依次赋给第0行中各元 素;将“第1行初值表”中的数据,依次赋给第1行各元素;以此类 推。 2.按2维数组在内存中的排列顺序给各元素赋初值 数据类型数组名行常量表达式列常量表达式]={初值表}; 赋值规则:按2维数组在内存中的排列顺序,将初值表中的数据, 依次赋给各元素 如果对全部元素都赋初值,则“行数”可以省略。泩意:只能 省略“行数
返回本章首页 下一页 上一页 5.2.3 2维数组元素的初始化 1.按行赋初值 数据类型 数组名[行常量表达式][列常量表达式]={{第0行初值 表},{第1行初值表},……,{最后1行初值表}}; 赋值规则:将“第0行初值表”中的数据,依次赋给第0行中各元 素;将“第1行初值表”中的数据,依次赋给第1行各元素;以此类 推。 2.按2维数组在内存中的排列顺序给各元素赋初值 数据类型 数组名[行常量表达式][列常量表达式]={初值表}; 赋值规则:按2维数组在内存中的排列顺序,将初值表中的数据, 依次赋给各元素。 如果对全部元素都赋初值,则“行数”可以省略。注意:只能 省略“行数
5.2.42维数组应用举例 案例54]有M个学生,学习N门课程,已知所有学生的各科成绩, 编程:分别求每个学生的平均成绩和每门课程的平均成绩 /*案例代码文件名:AL54C* *功能:计算个人平均成绩与各科平均成绩,并在屏幕上显示出来。* #define num std 5 *定义符号常量人数为5*/ #define num course 4 /*定义符号常量课程为4*/ #include stdio. h main i int i,j static float score[NUM std+l[NUM course+1]=(78, 85, 83, 65) 889189,93},{72,65,54,75},哪一 8688,7560},{69,60,50,72}}
返回本章首页 下一页 上一页 5.2.4 2维数组应用举例 [案例5.4] 有M个学生,学习N门课程,已知所有学生的各科成绩, 编程:分别求每个学生的平均成绩和每门课程的平均成绩。 /*案例代码文件名:AL5_4.C*/ /*功能:计算个人平均成绩与各科平均成绩,并在屏幕上显示出来。*/ #define NUM_std 5 /*定义符号常量人数为5*/ #define NUM_course 4 /*定义符号常量课程为4*/ #include "stdio.h" main() { int i,j; static float score[NUM_std+1][NUM_course+1]={{78,85,83,65}, {88,91,89,93}, {72,65,54,75}, {86,88,75,60}, {69,60,50,72}};
for(i=0; K<NUM std; 1++) ifor(=0; j<NUM course; j++) score[ lINUM course]+= corelli;/*求第i个人的总成绩* score NUM std]订]+= score[i/*求第j门课的总成绩* score[ IJINUM course]/= NUM course;/*求第i个人的平均成绩* for(=0 j <NUM course; j++) scoreNUM std[]/=NUM std /*求第j门课的平均成绩* curser /*输出表头* printi"学生编号课程1课程2课程3课程4个人平均n" *输出每个学生的各科成绩和平均成绩*
返回本章首页 下一页 上一页 for(i=0;i<NUM_std;i++) {for(j=0;j<NUM_course;j++) { score[i][NUM_course] += score[i][j];/*求第i个人的总成绩*/ score[NUM_std][j] += score[i][j];/*求第j门课的总成绩*/ } score[i][NUM_course]/= NUM_course;/*求第i个人的平均成绩*/ } for(j=0;j<NUM_course;j++) score[NUM_std][j]/= NUM_std; /*求第j门课的平均成绩*/ clrscr(); /*输出表头*/ printf("学生编号 课程1 课程2 课程3 课程4 个人平均\n"); /*输出每个学生的各科成绩和平均成绩*/
for(i=0 K<NUM std; 1++) printf("学生%dt",+1) for(=0; j<NUM course+1: j++) printf( %/06. 1ft", scored printf("n") /*输出1条短划线* for(=0 j<8* (NUM course+2):j++) printf("-") print"n课程平均") 输出每门课程的平均成绩* for(=0; j<NUM course;j++) printf( 06 1ft", scoreNUM std[D printf("n ) getchO
返回本章首页 下一页 上一页 for(i=0;i<NUM_std;i++) { printf("学生%d\t",i+1); for(j=0;j<NUM_course+1;j++) printf("%6.1f\t",score[i][j]); printf("\n"); } /*输出1条短划线*/ for(j=0;j<8*(NUM_course+2);j++) printf("-"); printf("\n课程平均"); /*输出每门课程的平均成绩*/ for(j=0;j<NUM_course;j++) printf("%6.1f\t",score[NUM_std][j]); printf("\n"); getch(); }