调用函数,找出矩阵每列中的最小元素,并将求和的结果进行返回,c语言,简单易懂

//题目叙述:自定义函数 SumColumMin,其功能是:
/求出 M 行 N 列二维数组每列元素中的最小值,
计算这些最小值和,
通过函数返回【函数头部规定如下:int SumColumMin(int a[M][N],int
* min)】。
在主函数中调用 SumColumMin 函数,
/
#include<stdio.h>//标准的输入和输出流
#include<stdlib.h>//system(“pause”)要用
#define M 3
#define N 4//宏定义,以后如果遇到n,都可以直接替换为100,
//它是简单的替换过程,其间只能有一个空格,并且在末尾不可以添加分号,
//否则会导致宏定义出错
int sumlolunmmin(int a[M][N], int* min);
int main(void)
{
int min[99];//定义一个长度为99的整形数组
int x = 0, i = 0, j = 0;//定义并初始化三个整形变量
int a[M][N];//定义一个三行四列的整形数组
printf(“请输入你的矩阵:\n”);//提示用户输入相应信息
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
{//将用户甘冈输入34阶的矩阵进行全部读入
//用两层for循环的形式
//第一层for循环代表行
//第二层for循环代表列
scanf_s("%d", &a[i][j]);
}
}
x=sumlolunmmin(a, min);//调用函数,开始求3
4阶矩阵的每列最小值,并求和将他返回
printf(“他们的最小值之和为%d\n”, x);//输出3*4阶矩阵每列的最小值之和
printf(“他们分别是:\n”);//用于提示作用
for (i = 0; i < N; i++)//打印输出每列中的最小值
{
printf("%d\t", (min + i));//每个元素和每个元素之间有一个空格符作为分割
}
system(“pause”);//将黑色窗口停留,用户按任意键后才会退出
return 0;//程序正常运行要返回一个0
}
int sumlolunmmin(int a[M][N], int
min)
{
int i = 0, j = 0, sum = 0, k;//定义四个整形的变量
//该用到的算法是选择排序法
for (j = 0; j < N; j++)
{
k = 0;//将k首先置为0,便于下一次比较的话是从第一行元素开始的
//第一层for循环代表列
//第二层for循环代表行,因为是比较一列中所有行的元素找出最小值,
//所以思路是这样的
for (i = 0; i < M; i++)
{
if (a[i][j] < a[k][j])
{
k = i;//如果该列中如果有比第一个元素小的,那么较小的值就是那个,
//然后再进行比较,直到遍历完这一列中所有的行,
//就可以找到该列中的最小元素了
}
}
sum += a[k][j];//这个时候已经是找到了该列的最小元素了,
//这时我们只需要将最小的元素保存在sum中,便于返回所有列中的最小元素的和
*min++ = a[k][j];//并将该列中的最小元素保存在数组中,注意每保存一个,指针都要忘后面移动一位
}
return sum;//返回所有列中最小元素的和
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值