嘿,我开始学习C语言,我被要求特别编写一个程序,一个凯撒密码(所以,这个想法是用字母表中的三个位置的字母替换信件中的任何字母。)
我的实现应该读取一行文本,然后根据读取的第一个字符执行加密或解密。如果第一个字符是$,那么我应该加密该行的其余部分,并在字符之前输出。如果第一个字符是?,那么我应该解密该行的其余部分,然后在字符$之前输出。
例如:?呃,呃呃呃
输出应该是:$是或不是
反之亦然。
所以这是我的代码到目前为止:
#include
int main(void){
char code[100], ch;
int i;
scanf("%s", &code);
if(code[0] == '$'){
for(i = 0; code[i] != '\0'; ++i){
ch = code[i];
if(ch >= 'a' && ch <= 'z'){
ch = ch + 3;
if(ch > 'z'){
ch = ch - 'z' + 'a' - 1;
}
code[i] = ch;
}
else if(ch >= 'A' && ch <= 'Z'){
ch = ch + 3;
if(ch > 'Z'){
ch = ch - 'Z' + 'A' - 1;
}
code[i] = ch;
}
}
printf("?%s\n", code);
return 0;
}
}但问题是,它会返回第一个字符,并在有空间时停止。
例如,我输入:$要输出到:?$ To
有人能帮我弄清楚我做错了什么吗?