C语言:程序填空:补全函数,求4x4数组上半三角元素并返回最小元素所在位置

题目来源:大工慕课 链接
作者:Caleb Sung

题目要求

(23)下载资料中的“23.矩阵最值2.c”程序,编写函数,给定一个4x4数组,求上半三角元素(包括主对角元)之和,以及最小元素所在的行和列。比如 a[4][4]={11,12,13,14,21,22,23,24,31,32,33,34,41,42,43,44},上半三角元素位11,12,13,14,22,23,24,33,34,44。(本题的4x4数组,使用随机数生成数组元素,随机数的产生可参考教材P88例7-7,或上网搜索。函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAXstdlib.h 中定义的一个很大的整数,它与系统有关。)

题目代码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int row, col;
int main()
{
    double minarr(double a[][4]);
    double a[4][4],s=0;
    int i,j;
    srand(time(NULL));
    printf("数组a为:\n");
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
        {
            printf("%6.1f",a[i][j]=rand()%99+1); //为数组元素赋值一个1~99的随机数并输出到屏幕上。
        }
        putchar('\n');
    }
    s=minarr(a);
    printf("最小值在第%d行,第%d列\n上半三角元素之和为%.1f\n",row+1,col+1,s);
    return 0;
}
// 根据函数的调用或函数声明在begin和end之间编写函数maxarr,完成题目中的功能。
// 注意:已写好的程序不能修改,先阅读主函数,明白题意再编写函数maxarr。 
// ***********begin***********

// ***********end*************

参考解答

double minarr(double a[][4]){
    int i, j, sum=0, min=999, tmpr, tmpc; 
    for(i=0; i<=3; i++){
        for(j=0; j<=3; j++){
            if(a[i][j] < min){
                min = a[i][j];
                tmpr = i;
                tmpc = j;
            }
        }
    }
    row = tmpr;
    col = tmpc;
    for(i=0; i<=3; i++){
        for(j=3-j; j>=0; j--){
            sum += a[i][j];
        }
    }
    return sum;
} 

运行效果

数组a为:
  58.0  63.0  28.0   9.0
  67.0  82.0  40.0  76.0
   3.0  57.0  31.0  53.0
  43.0   6.0  70.0  20.0
最小值在第3行,第1列
上半三角元素之和为594.0
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值