C语言编程:二维数组操作及密码译码
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;
}
**注意:**以上代码示例仅供参考,实际应用中可能需要根据具体需求进行修改。
原文地址: https://www.cveoy.top/t/topic/jJq9 著作权归作者所有。请勿转载和采集!