请编一个函数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数组建立联系明显增加了代码量,出错率也会大大提高。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/81535.html