c/c++:二维数组,数组的行数和列数求法sizeof,数组初始化不同形式,5个学生,3门功课,求学生总成绩和功课总成绩

文章目录

  • c/c++:二维数组,数组的行数和列数求法sizeof,数组初始化不同形式,5个学生,3门功课,求学生总成绩和功课总成绩
  • @[TOC](文章目录)
  • c/c++:二维数组
  • 二维数组怎么初始化
  • 5个学生,3门功课,求总成绩
  • 总结

c/c++:二维数组

一维数组的扩展集合

python计算一个二维数组每一列的平均值 python求二维数组行数_数组初始化


定义:

python计算一个二维数组每一列的平均值 python求二维数组行数_数组初始化_02

void f40(void)
{
	int arr[2][3] = {
		{2,5,8},
		{7,9,10}
	};//2行3列

	int a[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };//这种写法也行

	//打印是2层for循环
	int n = sizeof(arr) / sizeof(arr[0]);//这是行吧,arr[0]是0行的大小
	int m = sizeof(arr[0]) / sizeof(arr[0][0]);//1维数组的计算方法
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");//1行结束,回车
	}

}

int main(void)
{
	f40();

	system("pause");
	return 0;
}

python计算一个二维数组每一列的平均值 python求二维数组行数_功课数组总成绩_03


整体的大小

就是sizeof(arr);

python计算一个二维数组每一列的平均值 python求二维数组行数_数组初始化_04

void f41(void)
{
	int arr[2][3] = {
		{2,5,8},
		{7,9,10}
	};//2行3列

	printf("数组整体大小:%d\n", sizeof(arr));//
	printf("数组1行的大小:%d\n", sizeof(arr[0]));//一个行的大小
	printf("行的个数:%d\n", sizeof(arr)/sizeof(arr[0]));//整体/一个行的大小=n行
	
	printf("数组1个元素的大小:%d\n", sizeof(arr[0][0]));//一个数的大小
	printf("列的个数:%d\n", sizeof(arr[0])/sizeof(arr[0][0]));//1行/一个元素大小=m列
}


int main(void)
{
	f41();

	system("pause");
	return 0;
}

python计算一个二维数组每一列的平均值 python求二维数组行数_二维数组_05


数组的名字,也就是首个元素的地址

没问题的

`
void f42(void)
 {
 int arr[2][3] = {
 {2,5,8},
 {7,9,10}
 };//2行3列printf("数组整体地址:%x\n", arr);
printf("数组首个元素地址:%x\n", &arr[0][0]);//取地址别忘了}
`

python计算一个二维数组每一列的平均值 python求二维数组行数_数组初始化_06


我们看看首行的地址是

python计算一个二维数组每一列的平均值 python求二维数组行数_功课数组总成绩_07


你可以看看,数组实际上也是连续存放在一个存储空间的

是一行一行存的上面绿色0行存完,3个列放一起

然后是1行的3个列放一起

懂?

python计算一个二维数组每一列的平均值 python求二维数组行数_二维数组_08

二维数组怎么初始化

行列可以指定,但是实际大小可以变少

其余元素初始化为0;

void f43(void)
{
	int arr[3][4] = {
		{2,5,8},
		{7,9,10}
	};//2行3列

		//打印是2层for循环
	int n = sizeof(arr) / sizeof(arr[0]);//这是行吧,arr[0]是0行的大小
	int m = sizeof(arr[0]) / sizeof(arr[0][0]);//1维数组的计算方法
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");//1行结束,回车
	}
}

python计算一个二维数组每一列的平均值 python求二维数组行数_二维数组_09


所以,如果我们啥也不写也行

int arr[3][4] = { 0 };//直接整体干为0

python计算一个二维数组每一列的平均值 python求二维数组行数_c语言_10


如果不写{}呢?

简单写

它自动给你排

int arr[3][4] = {1,2,3,4,5};

python计算一个二维数组每一列的平均值 python求二维数组行数_二维数组_11


这种不常见的

你可以不指定几行几列【那是一维数组】
二维数组必须写列!!!!!!!!!!!

int arr[][3] = { 1,2,3,4,5,6};//数组必须执行列

python计算一个二维数组每一列的平均值 python求二维数组行数_数组初始化_12

int arr[][3] = { 1,2,3,4};//数组必须执行列

python计算一个二维数组每一列的平均值 python求二维数组行数_c语言_13


最好是标准的定义

5个学生,3门功课,求总成绩

和java中的fori按回车,一样快捷

c语言中,for按tab,就可以处for循环,你改下size_t的类型和length的名字

python计算一个二维数组每一列的平均值 python求二维数组行数_c语言_14

void f44(void)
{
	/*
1 2 3
4 5 6
7 8 9
1 2 3
1 2 3
	*/
	int arr[5][3];//慢慢赋值
	int n = sizeof(arr) / sizeof(arr[0]);//行
	int m = sizeof(arr[0]) / sizeof(arr[0][0]);//列

	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{//循环赋值也行的
			scanf("%d", &arr[i][j]);//挨个读取即可--这是算法中的第一步
			//在c++中是cin了,很简单
			//java中是in.next();
		}
	}

	//printArr(arr);//给它打印看看

	//回头再看函数
	//一个学生总成绩
	for (size_t i = 0; i < n; i++)
	{
		int sum = 0;
		for (size_t j = 0; j < m; j++)
		{
			sum += arr[i][j];//累计
		}
		printf("学生%d的成绩是:%d\n", i+1, sum);
	}

}

python计算一个二维数组每一列的平均值 python求二维数组行数_数组初始化_15

easy

void f44(void)
{
	/*
1 2 3
4 5 6
7 8 9
1 2 3
1 2 3
	*/
	int arr[5][3];//慢慢赋值
	int n = sizeof(arr) / sizeof(arr[0]);//行
	int m = sizeof(arr[0]) / sizeof(arr[0][0]);//列

	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{//循环赋值也行的
			scanf("%d", &arr[i][j]);//挨个读取即可--这是算法中的第一步
			//在c++中是cin了,很简单
			//java中是in.next();
		}
	}

	//printArr(arr);//给它打印看看

	//回头再看函数
	//一个学生总成绩
	for (size_t i = 0; i < n; i++)
	{
		int sum = 0;
		for (size_t j = 0; j < m; j++)
		{
			sum += arr[i][j];//累计
		}
		printf("学生%d的成绩是:%d\n", i+1, sum);
	}

	//每个学科的总成绩?

	for (size_t i = 0; i < m; i++)
	{
		int sum = 0;
		for (size_t j = 0; j < n; j++)
		{
			sum += arr[j][i];//累计
		}
		printf("功课%d的总成绩是:%d\n", i + 1, sum);
	}
}

python计算一个二维数组每一列的平均值 python求二维数组行数_c语言_16


列上求和也行哦

反正好说

你遍历的时候先看行还是列,分清就行。