14 2维数组练习

Posted abel2020

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:
");
    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 : 

");
    for (r = 0; r < ROW; r++) {
        for (c = 0; c < COL; c++)
            printf("%.2lf ", a[r][c]);
        printf("
");
    }
    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
", 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
", 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
", 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

",big);
    return 0;
}

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

}

 

以上是关于14 2维数组练习的主要内容,如果未能解决你的问题,请参考以下文章

3 维 malloc 数组的分段错误

第2章 排序 | 第14节 重复值判断练习题

在一个无序整数数组中,找出连续增长片段最长的一段, 增长步长是1。Example: [3,2,4,5,6,1,9], 最长的是[4,5,6]

小片段中的 ORA-06512 [重复]

web代码片段

嵌套循环:置换由向量表示的 n 维数组