进度日志17 (二位数组、多维数组)

该篇博客通过C语言代码展示了如何使用二维数组进行学生成绩统计,计算平均分,实现数组转置以及在矩阵中寻找最大值及其坐标。涉及的主要操作包括数组初始化、遍历、平均值计算和矩阵转置。
摘要由CSDN通过智能技术生成

题目:把下列同学的成绩保存到二维数组a[5][3]中,并求全员分科的平均成绩和总平均成绩

               张            王          李          赵          周

Math       80           61          59          85         76

C            75            65          63          87         77

Foxpro    92            71          70          90         85

答案:

#include <stdio.h>
void main()
{
    int i, j, sum = 0, average, v[i]; 
//sum是求和
    int a[5][3] = { {80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} };
    for (i = 0; i < 3;i++) 
//表示科目
    {
        for (j = 0; j < 5; j++) 
//表示学生
        {
            sum = sum + a[j][i];
        }
        v[i] = sum / 5;
        sum = 0;
    }
    average = (v[0] + v[1] + v[2]) / 3;
    printf("math:%d\nc:%d\nFoxpro:%d\n", v[0], v[1], v[2]);
    printf("total:%d\n", average);
}

题目2:转置,把a[2][3]转化为b[3][2]

思路:化繁为简,无论多少维数组,分解成一位数组进行转换

a[0][j] => b[j][0]

a[i][0] => b[0][i]

答案:

#include <stdio.h>
void main()
{
    int a[2][3] = { {1,2,3},{4,5,6} };
//定义a两行三列
    int b[3][2], i, j;
    printf("array a: \n");
//把数组a输出
    for (i = 0; i <= 1; i++)
    {
        for (j = 0; j <= 2; j++)
        {
            printf("%5d", a[i][j]);
            b[j][i] = a[i][j];
        }
        printf("\n");
    }
    printf("array b: \n");
    for (i = 0; i <= 2; i++)
    {
        for (j = 0; j <= 1; j++)
        {
            printf("%5d", b[i][j]);
        }
        printf("\n");
    }
}

运行结果:

题目3:  3×4矩阵,求出最大的元素值,以及其所在的行号和列号

答案:

#include <stdio.h>
void main()
{
    int i, j, row = 0, colum = 0, max;
    int a[3][4] = { {1,2,3,4},{9,8,7,6},{-10,10,-5,2} };
    max = a[0][0];
    for (i = 0; i <= 2; i++)
//这里是行
    {
        for (j = 0; j <= 3; j++)
//这里是列
        {
            if (a[i][j] > max)
            {
                max = a[i][j];
                row = i;
                colum = j;
            }
        }
    }
    printf("max=%d,row=%d,colum=%d\n", max, row, colum);
}

运行结果:

题目4:从键盘上输入9个正数,(对照九宫格的形式,输入三行,每行输入三个数)保存在二维数组中,按数组原来位置输出第一行和第一列的所有元素

提示:C语言习惯从0开始计算,所谓第一行第一列其实是第二行第二列

  

答案:
#pragma warning(disable:4996)
#include <stdio.h>
void main()
{
    int i, j, a[3][3];
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            printf("a[%d][%d]=", i, j);
            scanf("%d", &a[i][j]);
        }
    }
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            if (i == 1 || j == 1)  
//如果是第一行第一列 (即第二行第二列)
            {
                printf("%-6d", a[i][j]);
            }
            else
            {
                printf("%-6c", ' ');
// ' '里面打印空格
            }
        }
        printf("\n");
    }
}

运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值