1 题目
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下: 每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
2 分析
观察发现对数的加密是按其位数操作的,所以首先要将其各个位数分解出来,这里采用除余法,将每个数放在一个数组中,就把问题转换为了对数组中某个元素的操作了。
3 实现
#include <stdio.h>
int main()
{
int a, i, aa[4], t;
printf("请输入四位数字:");
scanf("%d", &a);
aa[0] = a % 10; // 分解出第一位
aa[1] = a % 100 / 10; // 分解出第二位
aa[2] = a % 1000 / 100; // 分解出第三位
aa[3] = a / 1000; // 分解出第四位
for (i = 0; i <= 3; i++) {
aa[i] += 5; // 每位数字都加上5
aa[i] %= 10; // 用和除以10的余数代替该数字
}
// 交换
for (i = 0; i <= 3/2; i++) {
t = aa[i];
aa[i] = aa[3-i];
aa[3-i] = t;
}
printf("加密后的数字:");
for (i = 3; i >= 0; i--) {
printf("%d", aa[i]);
}
printf("\n");
}
4 运行结果
请输入四位数字:1234
加密后的数字:9876