🐾🐾🐾第5章数组章节习题🐾🐾🐾

48 阅读4分钟

😸😸😸 zyz2025.12.10: 😸😸😸


😼 1.请编写程序实现以下功能 😼

😼 2.请编写程序实现以下功能 😼

😼 3.阵转置是线性代数的基本运算,就是将矩阵的行、列交换,即将行变成列,将列变成行。要求编写程序,实现输入一个 4 行 4 列的矩阵,将矩阵转置后输出。 😼



🐲 1. 请编写程序实现以下功能: 🐲

🐲 (1)从键盘输入 6 个整数。 🐲

🐲 (2)找出这 6 个整数中的最大值,并将其输出到控制台。 🐲

🦭 (一)代码如下: 🦭

#include 

int main() {
    int num[6];
    int max;
    printf("请输入6个整数:\n");
    // 输入6个整数
    for (int i = 0; i < 6; i++) {
        scanf(&#34;%d&#34;, &num[i]);
    }
    // 假设第一个数是最大值,依次比较
    max = num[0];
    for (int i = 1; i < 6; i++) {
        if (num[i] > max) {
            max = num[i];
        }
    }
    printf(&#34;最大值是:%d\n&#34;, max);
    return 0;
}

🦭 (二)运行结果如下: 🦭

image.png

🦭 (三)所涉及到的知识(ai生成): 🦭

一、编程题 1(输入 6 个整数找最大值)核心知识点

  1. C 语言基本输入输出printf()(控制台输出)、scanf()(键盘输入)的使用,注意scanf接收整型数据时需传入变量地址(&符号)。
  2. 数组基础:一维数组的定义(int num[6])、数组下标访问(从 0 开始),利用数组存储多个同类型数据。
  3. 循环结构for循环的语法及应用(遍历数组完成输入、遍历数组比较元素)。
  4. 条件判断if语句的使用(比较数组元素大小,更新最大值)。
  5. 变量初始化与赋值:最大值变量max的初始化(需先赋值为数组首个元素,避免随机值)。


🦖 2.请编写程序实现以下功能: 🦖

🦖 (1)从键盘输入 6 个整数。 🦖

🦖 (2)使用冒泡排序法将这 6 个整数从小到大排序。 🦖

🦈 (一)代码如下: 🦈

#include 

int main() {
    int num[6];
    int temp;
    printf(&#34;请输入6个整数:\n&#34;);
    // 输入6个整数
    for (int i = 0; i < 6; i++) {
        scanf(&#34;%d&#34;, &num[i]);
    }
    // 冒泡排序:相邻元素比较交换,大的“冒泡”到后面
    for (int i = 0; i < 5; i++) {  // 最多需要5轮排序
        for (int j = 0; j < 5 - i; j++) {  // 每轮少比较已排好的元素
            if (num[j] > num[j + 1]) {
                temp = num[j];
                num[j] = num[j + 1];
                num[j + 1] = temp;
            }
        }
    }
    // 输出排序后的结果
    printf(&#34;排序后的结果(从小到大):&#34;);
    for (int i = 0; i < 6; i++) {
        printf(&#34;%d &#34;, num[i]);
    }
    printf(&#34;\n&#34;);
    return 0;
}

🦈 (二)运行结果如下: 🦈

image.png

🦈 (三)所涉及到的知识(ai生成): 🦈

二、编程题 2(6 个整数冒泡排序)核心知识点

  1. 一维数组进阶:数组的遍历、元素交换(借助临时变量temp实现两个数组元素值互换)。
  2. 嵌套循环:双层for循环的逻辑(外层控制排序轮数,内层控制每轮比较 / 交换次数)。
  3. 冒泡排序算法原理:相邻元素两两比较,将较大元素逐步 “冒泡” 到数组末尾,理解排序的核心逻辑(每轮排序后,末尾的 i 个元素已确定顺序,无需重复比较)。
  4. 输入输出优化:批量数据输入后的格式化输出(排序结果的空格分隔、换行处理)。


🙀 3.矩阵转置是线性代数的基本运算,就是将矩阵的行、列交换,即将行变成列,将列变成行。要求编写程序,实现输入一个 4 行 4 列的矩阵,将矩阵转置后输出。 🙀

🦝 (一)代码如下: 🦝

#include 

int main() {
    int matrix[4][4];
    int transposed[4][4];
    printf(&#34;请输入44列的矩阵(每行输入4个整数):\n&#34;);
    // 输入原矩阵
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            scanf(&#34;%d&#34;, &matrix[i][j]);
        }
    }
    // 矩阵转置:将matrix[i][j]赋值给transposed[j][i]
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            transposed[j][i] = matrix[i][j];
        }
    }
    // 输出转置后的矩阵
    printf(&#34;转置后的矩阵:\n&#34;);
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            printf(&#34;%d &#34;, transposed[i][j]);
        }
        printf(&#34;\n&#34;);
    }
    return 0;
}

🦝 (二)运行结果如下: 🦝

image.png

🦝 (三)所涉及到的知识(ai生成): 🦝

三、编程题 3(4x4 矩阵转置)核心知识点

  1. 二维数组:二维数组的定义(int matrix[4][4])、下标访问(matrix[i][j]表示第 i 行第 j 列元素),二维数组的输入输出(双层循环遍历行和列)。
  2. 矩阵转置逻辑:理解 “行变列、列变行” 的数学规则,即转置后矩阵的transposed[j][i] = 原矩阵的matrix[i][j]
  3. 数据存储与赋值:借助第二个二维数组存储转置后的矩阵,掌握不同数组间的元素赋值操作。
  4. 循环嵌套的灵活应用:双层循环遍历二维数组的行和列,区分 “输入原矩阵”“转置计算”“输出转置矩阵” 三个阶段的循环逻辑差异。