我想为数字制作凯撒密码。(所有数字加3)
输入:52 输出:85
输入:954 输出:287
输入:-10457 输出:-43780
如果有人帮助我,我会很高兴。
我试过了,但是当我输入小于 5 位的数字时,它输出 3 到开头。
当我输入 52 时,它输出 33385。我还想询问用户程序是否应该接受新数字或直接退出。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int number, operation;
printf("Enter the number: ");
scanf("%d", &number);
printf("%d", ((number / 10000) + 3) % 10);
printf("%d", (((number % 10000) / 1000) + 3) % 10);
printf("%d", (((number % 1000) / 100) + 3) % 10);
printf("%d", (((number % 100) / 10) + 3) % 10);
printf("%d\n", ((number % 10) + 3) % 10);
printf("press 1 to continue or 2 for exit.");
scanf("%d", &operation);
switch (operation) {
case 1:
printf("Enter the number: ");
scanf("%d", &number);
printf("%d", ((number / 10000) + 3) % 10);
printf("%d", (((number % 10000) / 1000) + 3) % 10);
printf("%d", (((number % 1000) / 100) + 3) % 10);
printf("%d", (((number % 100) / 10) + 3) % 10);
printf("%d\n", ((number % 10) + 3) % 10);
break;
case 2:
break;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当您输入 52 时,您的数字变量的值为 00052,它将与您的代码一起转换为 33385。如果您不想要前导 3,您可以不打印它们,或者先检索数字并计算其关联的凯撒仅当数字不为 0 时才为数字。
考虑任何int数字(无论 digit 的数量)的另一种可能性是:
#include "stdio.h"
#include <stdlib.h>
int main()
{
int number, abs_number;
int caesar_number = 0;
int digit_pos = 1;
printf("Enter the number: ");
scanf("%d", &number);
abs_number = abs(number);
while (abs_number != 0)
{
caesar_number += (((abs_number % 10) + 3) % 10) * digit_pos;
abs_number /= 10;
digit_pos *= 10;
}
if (number < 0)
{
caesar_number = -caesar_number;
}
printf("Result is: %d\n", caesar_number);
return 0;
}
Run Code Online (Sandbox Code Playgroud)