C语言编程:二维数组操作及密码译码

1. 计算二维数组中所有正数和所有负数之和

**问题:**为整型二维数组 b[3][4]输入 12 个数据,计算并输出数组中所有正数的和、所有负数的和。

代码:

#include <stdio.h>
int main() {
    int b[3][4];
    int i, j, pos_sum = 0, neg_sum = 0;
    //输入12个数据
    printf('请输入12个整数:\n');
    for(i = 0; i < 3; i++) {
        for(j = 0; j < 4; j++) {
            scanf('%d', &b[i][j]);
        }
    }
    //计算正数和负数之和
    for(i = 0; i < 3; i++) {
        for(j = 0; j < 4; j++) {
            if(b[i][j] > 0) {
                pos_sum += b[i][j];
            } else {
                neg_sum += b[i][j];
            }
        }
    }
    //输出结果
    printf('所有正数之和为:%d\n', pos_sum);
    printf('所有负数之和为:%d\n', neg_sum);
    return 0;
}

2. 寻找二维数组中的鞍点

**问题:**请找出二维数组 b[5][4]中的鞍点,鞍点指该位置上的元素值在该行中最大,且在该列中最小。如果有鞍点,请输出其下标值;如果没有鞍点,请给出没有鞍点的提示信息。

代码:

#include <stdio.h>
int main() {
    int b[5][4];
    int i, j, row_max, col_min, saddle_point = 0;
    //输入20个数据
    printf('请输入20个整数:\n');
    for(i = 0; i < 5; i++) {
        for(j = 0; j < 4; j++) {
            scanf('%d', &b[i][j]);
        }
    }
    //寻找鞍点
    for(i = 0; i < 5; i++) {
        row_max = b[i][0];
        col_min = b[0][j];
        for(j = 1; j < 4; j++) {
            if(b[i][j] > row_max) {
                row_max = b[i][j];
            }
        }
        for(j = 1; j < 5; j++) {
            if(b[j][i] < col_min) {
                col_min = b[j][i];
            }
        }
        for(j = 0; j < 4; j++) {
            if(b[i][j] == row_max && b[i][j] == col_min) {
                saddle_point = 1;
                printf('鞍点坐标为:[%d, %d]\n', i, j);
            }
        }
    }
    //输出结果
    if(saddle_point == 0) {
        printf('该二维数组中没有鞍点!\n');
    }
    return 0;
}

3. 将密码译成原文

**问题:**有一电文,已按下列规律译成译码: A→Z a→z B→Y b→y C→X c→x 即第一个字母变成第 26 个字母,第 i 个字母变成第(26-i+1)个字母。非字母字符不变。编写一个程序将密码译成原文,并输出密码和原文。

代码:

#include <stdio.h>
int main() {
    char password[100], original[100];
    int i;
    //输入密码
    printf('请输入密码:\n');
    fgets(password, 100, stdin);
    //译成原文
    for(i = 0; password[i] != '\0'; i++) {
        if(password[i] >= 'A' && password[i] <= 'Z') {
            original[i] = 'A' + 'Z' - password[i];
        } else if(password[i] >= 'a' && password[i] <= 'z') {
            original[i] = 'a' + 'z' - password[i];
        } else {
            original[i] = password[i];
        }
    }
    original[i] = '\0';
    //输出密码和原文
    printf('密码为:%s', password);
    printf('原文为:%s', original);
    return 0;
}

**注意:**以上代码示例仅供参考,实际应用中可能需要根据具体需求进行修改。

C语言编程:二维数组操作及密码译码

原文地址: https://www.cveoy.top/t/topic/jJq9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录