【发布时间】:2021-12-20 10:31:43
【问题描述】:
我正在编写一个程序来解决一个随机代码。(代码不会有大写字母,任何形式的符号,如句号)代码使用移位密码而不知道密钥,它也可以加密代码,但我会稍后再处理。现在我尝试先输出所有 25 个结果。
但是,如果我输入“背靠背”之类的内容,它会在最后输出一个问号。
这是我的代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char code[400];
char after[400]; // variable initialization
int i, x, choice, z, temp, y;
printf(" Welcome\n");
printf("Enter your code here:\n");
scanf("%[^'\n']s", code);
printf("Press 1 to Decrypt\nPress 2 to encrypt\nPress 3 to Exit\n");
scanf("%d", &choice);
// case 1 is decryption
switch (choice) {
case 1:
for (x = 1; x <= 25; x++) {
for (i = 0; (i <= 400 && code[i] != 0); i++) // for loop
{
if (code[i] == 32) { // 32 means space in ascii code
after[i] = 32;
continue; // if there is a space it will continue
}
if (code[i] + x > 122) { // 122 is z in ascii code
after[i] = code[i] + x; // if it is higher than 'z'
after[i] = (after[i] - 122) + 96; // it start counting form 'a'
continue;
} else {
after[i] = code[i] + x;
// if nothing is wrong,it starting adding the key
}
}
printf("After decrypting:%s\n", after);
printf("%s\n", code);
}
break;
// case 2 is ecnrypt so its not important
case 2:
x = 5;
for (i = 0; (i <= 400 && code[i] != 0); i++) // for loop
{
if (code[i] == ' ') {
continue;
}
if (code[i] + x > 122) {
code[i] = code[i] + x;
code[i] = (code[i] - 122) + 96;
continue;
} else {
code[i] = code[i] + x;
}
}
printf("After decrypting:%s", code);
break;
// not important as well
case 3:
printf("GOODBYE");
break;
// not important as well
default:
printf("Errors");
return 0;
}
}
【问题讨论】:
标签: arrays c for-loop switch-statement