基于方向键实现矩阵选择

目录

4*3

要实现上下左右OK五个按键来操作一个4x3矩阵,您可以按照类似的思路进行编程。以下是一个示例代码:

#include <stdio.h>

#define ROWS 4
#define COLS 3

int matrix[ROWS][COLS] = {
   
    {
   1, 2, 3},
    {
   4, 5, 6},
    {
   7, 8, 9},
    {
   10, 11, 12}
};

void printMatrix() {
   
    for (int i = 0; i < ROWS; i++) {
   
        for (int j = 0; j < COLS; j++) {
   
            printf("%-2d ", matrix[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}

void moveUp() {
   
    int temp[COLS];
    for (int j = 0; j < COLS; j++) {
   
        temp[j] = matrix[0][j];
    }
    for (int i = 0; i < ROWS - 1; i++) {
   
        for (int j = 0; j < COLS; j++) {
   
            matrix[i][j] = matrix[i + 1][j];
        }
    }
    for (int j = 0; j < COLS; j++) {
   
        matrix[ROWS - 1][j] = temp[j];
    }
}

void moveDown() {
   
    int temp[COLS];
    for (int j = 0; j < COLS; j++) {
   
        temp[j] = matrix[ROWS - 1][j];
    }
    for (int i = ROWS - 1; i > 0; i--) {
   
        for (int j = 0; j < COLS; j++) {
   
            matrix[i][j] = matrix[i - 1][j];
        }
    }
    for (int j = 0; j < COLS; j++) {
   
        matrix[0][j] = temp[j];
    }
}

void moveLeft() {
   
    int temp[ROWS];
    for (int i = 0; i < ROWS; i++) {
   
        temp[i] = matrix[i][0];
    }
    for (int i = 0; i < ROWS; i++) {
   
        for (int j = 0; j < COLS - 1; j++) {
   
            matrix[i][j] = matrix[i][j + 1];
        }
    }
    for (int i = 0; i < ROWS; i++) {
   
        matrix[i][COLS - 1] = temp[i];
    }
}

void moveRight() {
   
    int temp[ROWS];
    for (int i = 0; i < ROWS; i++) {
   
        temp[i] = matrix[i][COLS - 1];
    }
    for (int i = 0; i < ROWS; i++) {
   
        for (int j = COLS - 1; j > 0; j--) {
   
            matrix[i][j] = matrix[i][j - 1];
        }
    }
    for (int i = 0; i < ROWS; i++) {
   
        matrix[i][0] = temp[i];
    }
}

void pressOK() {
   
    int sum = 0;
    for (int i = 0; i < ROWS; i++) {
   
        for (int j = 0; j < COLS; j++) {
   
            sum += matrix[i][j];
        }
    }
    printf("Sum: %d\n", sum);
}

int main() {
   
    int choice;

    while (1) {
   
        printMatrix();
        printf("Press 1: Up, 2: Down, 3: Left, 4: Right, 5: OK\n");
        printf("Enter your choice: ");
        scanf("%d", &choice);

        switch (choice) {
   
            case 1:
                moveUp();
                break;
            case 2:
                moveDown();
                break;
            case 3:
                moveLeft();
                break;
            case 4:
                moveRight();
                break;
            case 5:
                pressOK();
                break;
            default:
                printf("Invalid choice!\n");
        }

        printf("\n");
    }

    return 0;
}

这个示例与之前的示例非常相似,只是调整了矩阵的行和列的顺序,以适应4x3的矩阵。移动操作的实现也有一些微调。

3*4

要实现上下左右OK五个按键来操作一个3x4矩阵,您可以使用一个二维数组来表示该矩阵,并利用按键输入来进行矩阵操作。以下是一个示例代码:

#include <stdio.h>

#define ROWS 3
#define COLS 4

int matrix[ROWS][COLS] = {
   
    {
   1, 2, 3, 4},
    {
   5, 6, 7, 8},
    {
   9, 10, 11, 12}
};

void printMatrix() {
   
    for (int i = 0; i < ROWS; i++) {
   
        for (int j = 0; j < COLS; j++) {
   
            printf("%-2d ", matrix[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}

void moveUp() {
   
    int temp = matrix[0][0];
    for (int i = 0; i < ROWS - 1; i++) {
   
        for (int j = 0; j < COLS; j++) {
   
            matrix[i][j] = matrix[i + 1][j];
        }
    }
    for (int j = 0; j < COLS; j++) {
   
        matrix[ROWS - 1][j] = temp;
    }
}

void moveDown() {
   
    int temp = matrix[ROWS - 1][0];
    for (int i = ROWS - 1; i > 0; i--) {
   
        for (int j = 0; j < COLS; j++) {
   
            matrix[i][j] = matrix[i - 1][j];
        }
    }
    for (int j = 0; j < COLS; j++) {
   
        matrix[0][j] = temp;
    }
}

void moveLeft() {
   
    int temp = matrix[0][0];
    for (int i = 0; i < ROWS; i++) {
   
        for (int j = 0; j < COLS - 1; j++) {
   
            matrix[i][j] = matrix[i][j + 1];
        }
    }
    for (int i = 0; i < ROWS; i++) {
   
        matrix[i][COLS - 1] = temp;
    }
}

void moveRight() {
   
    int temp = matrix[0][COLS - 1];
    for (int i = 0; i < ROWS; i++) {
   
        for (int j = COLS - 1; j > 0; j--) {
   
            matrix[i][j] = matrix[i][j - 1];
        }
    }
    for (int i = 0; i < ROWS; i++) {
   
        matrix[i][0] = temp;
    }
}

void pressOK() {
   
    int sum = 0;
    for (int i = 0; i < ROWS; i++) {
   
        for (int j = 0; j < COLS; j++) {
   
            sum += matrix[i][j];
        }
    }
    printf("Sum: %d\n", sum);
}

int main() {
   
    int choice;

    while (1) {
   
        printMatrix();
        printf("Press 1: Up, 2: Down, 3: Left, 4: Right, 5: OK\n");
        printf("Enter your choice: ");
        scanf("%d", &choice);

        switch (choice) {
   
            case 1:
                moveUp();
                break;
            case 2:
                moveDown();
                break;
            case 3:
                moveLeft();
                break;
            case 4:
                moveRight();
                break;
            case 5:
                pressOK();
                break;
            default:
                printf("Invalid choice!\n");
        }

        printf("\n");
    }

    return 0;
}

在这个示例中,我们定义了一个3x4矩阵matrix,以及相应的按键操作函数。printMatrix函数用于打印矩阵。moveUpmoveDownmoveLeftmoveRight函数分别实现了上、下、左、右按键的移动操作,将矩阵按指定方向进行移动。pressOK函数用于计算矩阵中所有元素的和。

main函数中,我们通过一个循环来接受用户的按键输入,并根据选择调用相应的按键操作函数或打印矩阵的和。

相关推荐

  1. 基于方向实现矩阵选择

    2023-12-06 07:34:02       52 阅读
  2. 指令选择原理与实现方式

    2023-12-06 07:34:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-06 07:34:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-06 07:34:02       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-06 07:34:02       82 阅读
  4. Python语言-面向对象

    2023-12-06 07:34:02       91 阅读

热门阅读

  1. CoreDNS实战(二)-CoreDNS+ETCD实现DNS服务发现

    2023-12-06 07:34:02       60 阅读
  2. asp.net core webpi 结合jwt实现登录鉴权

    2023-12-06 07:34:02       56 阅读
  3. MFC与qt的区别

    2023-12-06 07:34:02       54 阅读
  4. springboot集成mybatis-plus

    2023-12-06 07:34:02       52 阅读
  5. SASS基本语法总结

    2023-12-06 07:34:02       60 阅读
  6. 学习kafka

    2023-12-06 07:34:02       63 阅读
  7. 【超全】React学习笔记 上:基础使用与脚手架

    2023-12-06 07:34:02       151 阅读
  8. 软件工程 课堂测验 简答

    2023-12-06 07:34:02       47 阅读