7.20学习总结

        今天主要学习了关于二维数组的一些知识,做了一些练习题,对于今天的知识接收程度还算可以,虽然其中有一些磕磕碰碰,但最后都能够顺利解决。总体来说今天又是充实的一天。

二维数组

        二维数组:也成为矩阵,主要是能偶有效地解决行和列的队列数据的处理。

        二维数组的一般形式是:类型符  数组名[ ] [ ]

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值