C语言之输出一个二维数组中,求每列最大的元素,并存放在另一个数组中

请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。

#include<stdio.h>
void func(int arr[4][4], int pp[4])
{
    
    
	int i,j;
	for (j = 0; j < 4; j++)//本题的特殊性在于输出每列最大的元素,因此应当固定列的基础去遍历行
	{
    
    
		pp[j] = arr[0][j];//遍历不同列时,将原始数组每列第一个元素赋给目标数组
		for (i = 1; i < 4; i++)//遍历数组各行,注意行数是从1开始而不是0
		{
    
    
			if (arr[i][j] > pp[j])
				pp[j] = arr[i][j];//将每列最大的数储存在目标数组中
		}
	}
}
main()
{
    
    
	int i, j, arr[4][4],pp[4];
	printf("请输入原始数组:\n");
	for (i = 0; i < 4; i++)
	{
    
    
		for (j = 0; j < 4; j++)
			scanf_s("%d", &arr[i][j]);
	}
	func(arr, pp);
	printf("整理后的数组为:");
	for (i = 0; i < 4; i++)
	{
    
    
		printf("%d  ", pp[i]);
	}
}

在这里插入图片描述在这里插入图片描述在拿到该题时,一部分人可能会想到重新定义一个数组max[N]将每列元素的最大值存放在该数组中,如上面所示,直接使max[N]=pp[N]是不能实现两个数组中元素对应赋值,而且定义第三个变量再与pp数组建立联系明显增加了代码量,出错率也会大大提高。

猜你喜欢

转载自blog.csdn.net/m0_64365419/article/details/125233513
今日推荐