今天主要学习了关于二维数组的一些知识,做了一些练习题,对于今天的知识接收程度还算可以,虽然其中有一些磕磕碰碰,但最后都能够顺利解决。总体来说今天又是充实的一天。
二维数组
二维数组:也成为矩阵,主要是能偶有效地解决行和列的队列数据的处理。
二维数组的一般形式是:类型符 数组名[ ] [ ]
int a[3][5];//这是3行5列的一个数组
需要注意的是,数组里面的常量表达式不能是变量,而且数组长度必须确定;
数组打印的话,得要定义能够确定行和列的数,例如:
int a[3][4]={{1,2,3,4},{5,6,7,8},{4,6,8,9}};
int i;//确定行
int j;//确定列
for(i=0;i<3;i++){
for(j=0;j<5;j++){
printf("%d",a[i][j]);
}
}
如果想要二维数组初始值都为0的话,可以
int a[3][3]={0};
科学计数法
科学计数法是一种特定的计数法,标准形式中,整数只能有一位,而且后面必须是整数
实例分析
这是一个数组交换的一个实例,假如,数组a是一个三行四列的数组,要将数组a[3][4]改变为b[4][3]四行三列,简单来说就是将数组a的行,变为数组b的列,具体的内容分析如下:
#include <stdio.h>
int main(){
//用来控制行和列,i表示行,j表示列
int i,j;
//定义一个3行4列的数组a
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,8,7,6}};
//定义一个4行3列的数组b,用来存放数组a里面的内容
int b[4][3];
//用来输出数组a里面的元素
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
//将数组a里面的坐标值赋给数组b的坐标,然后输出
for(i=0;i<3;i++){
for(j=0;j<4;j++){
b[j][i]=a[i][j];
}
printf("\n");
}
//输出数组b
for(i=0;i<4;i++){
for(j=0;j<3;j++){
printf("%d ",b[i][j]);
}
printf("\n");
}
return 0;
}
这个成绩主要统计三个学生的成绩,统计3个学生4次考试成绩,输出最高分和最低分,并求出每个学生的平均分。
这个题的话,统计3个学生4次考试成绩,看到题目就现象但可以用一个三行四列的数组做,就相当于第一行用来存放第一个学生的四次成绩,第二行用来存放第二个学生的四次成绩,第一三行用来存放第三个学生的四次成绩,这个题我做的时候有许多注释掉的地方,其实注释掉的地方也是可以实现的,但是我发现代码太多,就对代码进行了一下优化,比如最高分最低分,可以用if...else...来做,求每个学生的平均成绩如果按照注释的方法来做,需要定义许多的变量,而且3个还有共同的代码,所以我就想了想,想到了现在的办法,把他们共同的代码放进一个循环里面,进行操作,就是行不变,对列进行累加并求平均值,但是要注意的是累加的话也就是sum,必须要赋初值,而且要放在行循环里面。
/*
设计一个二维数组,统计三个学生的4次考试成绩,输出最高分,输出最低分,每个学生的平均成绩
*/
#include <stdio.h>
int main(){
int i,j;
float max,min=100;
float avg;
float a[3][4];
printf("请输入每个学生的四次考试成绩:\n");
//输入成绩
for(i=0;i<3;i++){
for(j=0;j<4;j++){
scanf("%f",&a[i][j]);
}
}
//找最大值 ,最小值
for(i=0;i<3;i++){
for(j=0;j<4;j++){
if(max<a[i][j])
max=a[i][j];
else if(min>a[i][j])
min=a[i][j];
}
}
printf("成绩中最高分是:%.1f\n",max);
printf("成绩中最低分是:%.1f\n",min);
//找最小值
// for(i=0;i<3;i++){
// for(j=0;j<4;j++){
// if(min>a[i][j])
// min=a[i][j];
// }
// }
// printf("成绩中最低分是:%.1f\n",min);
//求每个学生平均分
for(i=0;i<3;i++){
float sum=0;
for(j=0;j<4;j++){
sum+=a[i][j];
avg=sum/4;
}
printf("第%d个学生总分:%.f\n",i+1,sum);
printf("第%d个学生的平均分:%.f\n",i+1,avg);
}
// 第一个学生
// for(j=0;j<4;j++)
// sum+=a[0][j];
// avg=sum/4;
// printf("%.1f\n",avg);
// //第二个学生
// for(j=0;j<4;j++)
// sum_01+=a[1][j];
// avg_01=sum_01/4;
// printf("%.1f\n",avg_01);
// //第三个学生
// for(j=0;j<4;j++)
// sum_02+=a[2][j];
// avg_02=sum_02/4;
// printf("%.1f\n",avg_02);
return 0;
}