14 2维数组练习

/*
该程序练习二维数组
用户输入3组数,每组5个, (3行5列数组)
计算每组平均值
计算每行平均值
计算所有数的平均值
找出所有数的最大值
 可以使用如下数组测试

 a[3][5] = {{11,12,13,14,15},
                      {21,22,23,24,15},
                      {31,32,33,34,35}};
想象,a有三个一维数组组成(竖着排的11,21,31),每个数组有5个数组组成。
*a 是一个地址,即 &a[0] 。a是指针的指针,指向第一行(也指向行中的第一个),a+1向下 移动一行
*(a+1) 代表第二行,即a [1] ,即 21,22,23,24,15
*((*a+1)+2) ==第二列第3个即23
感觉二维数组的指针太难了。。。
*/

#include <stdio.h>
#define ROW 3
#define COL 5

//声明函数
void prs(void);
void av_row(double ar[][COL], int row);    //计算每行平均值
void av_col(double ar[][COL], int row);   //计算每列平均值
void av_all(double ar[][COL], int row);
void find_big(double ar[][COL], int row);

main() {
    double a[ROW][COL];
    int r, c;


    ////-------------------输入部分: ----------------------------------
    // 用户输入3组数,每组5个
    printf("please input 15 numbers:\n");
    for (r = 0; r < ROW; r++)
        for (c = 0; c < COL; c++)
            scanf_s("%lf", &a[r][c]);



    //// 测试数组:
    //double a[ROW][COL] = {
    //   {11,12,13,14,15},
    //   {21,22,23,24,15},
    //   {31,32,33,34,35}
    //};

    //// 测试输入
    //   { 11.1 1.2 1.23 -1.4 14.5 92.1 111.1 22.3 233.4 0.01 13.1 33.2 3.3 33.4 35.9  }



    //显示数组

    printf("You array is : \n\n");
    for (r = 0; r < ROW; r++) {
        for (c = 0; c < COL; c++)
            printf("%.2lf ", a[r][c]);
        printf("\n");
    }
    prs();


    //调用计算
    av_row(a, ROW);     //计算每行平均值
    av_col(a, ROW);     //计算每列平均值
    av_all(a, ROW);//计算总平均值
    find_big(a, ROW);  //找最大数

}


//      ----------------------                下面计算        ----------------------    ////

//计算每组平均值
//void avcol(double  (*p)[COL],int row)
void av_row(double ar[][COL], int row)
{
    int r, c;
    double av;
    double sum = 0.0;

    for (r = 0; r < row; r++) {
        sum = 0.0;           //不能少,每轮循环重置;
        for (c = 0; c < COL; c++)
        {
            sum += ar[r][c];
            av = sum / COL;
        }
        printf("Row%d   sum=%.0f,   av=   %.2f\n", r + 1, sum, av);
    }
    prs();  
}
//计算每列平均值
void av_col(double ar[][COL], int row) {
    double sum = 0.0;
    double av;
    int c, r;

    for (c = 0; c < COL; c++) {
        double sum = 0.0;
        for (r = 0; r < row; r++)
        {
            sum += ar[r][c];
            av = sum / row;
        }
        printf("col%d   sum=%.0f,   av=   %.2f\n", c + 1, sum, av);
    }
    prs();  
};




//计算所有数的平均值
void av_all(double ar[][COL], int row) {
    double sum = 0.0;
    double av = 0;
    int c, r;

    for (c = 0; c < COL; c++) 
        for (r = 0; r < row; r++)
            sum += ar[r][c];

    av = sum / ROW / COL;
    printf(" ALL sum=%.0f,   av=   %.2f\n", sum, av);
    prs();  
}


//找出所有数的最大值

void find_big(double ar[][COL], int row) {


    double big;
    int c, r;

    for (c = 0; c < COL; c++) {
        double sum = 0.0;
        for (r = 0; r < row; r++)
        {
            big = ar[0][0];
            if (big < ar[r][c])
                big = ar[r][c];
        }
    }
    printf("The biggest num is %.2f\n\n",big);
    return 0;
}

void prs(void) {
    printf("\n*******************************\n");

}

 

原文链接: https://www.cnblogs.com/abel2020/p/12983702.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    14 2维数组练习

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/351339

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午6:48
下一篇 2023年3月2日 上午6:48

相关推荐