寸夢 2023-12-24 20:59 采纳率: 100%
浏览 2
已结题

关于#c语言#的问题,请各位专家解答!(相关搜索:凯撒密码)

用指针作为函数参数,设计凯撒密码,要求做到加密与解密、请问各位专家究竟哪里出错了?

img

#include <stdio.h>

}
#define N 100
void lock(char *p);
void unlock(char *p);
int main(void)
{
 char a[N];
 printf("请输入需加密内容:");
 gets(a);
 lock(a);
 puts(a); 
 unlock(a);
 puts(a);
}
void lock(char *p)
{
     for(;*p!='\0';p++)
     {
         if(*p>='a'&&*p<='w') *p=*p+3;
         if(*p>='x'&&*p<='z') *p=*p-23;
     }
 }
void unlock(char *p)
{
     for(;*p!='\0';p++)
     {
        if(*p>='d'&&*p<='z') *p=*p-3;
        if(*p>='a'&&*p<='c') *p=*p+23;
     }
}
  • 写回答

2条回答 默认 最新

  • threenewbee 2023-12-24 21:29
    关注

    目测2个错误,一个是没有考虑大写,另一个是,第二个 if 应该是 else if,否则可能出现第一个if修改了值。导致第二个又满足,再次修改。
    比如 * p=‘w’,则 if(*p>='a'&&*p<='w') *p=*p+3; 执行,之后 * p 成为了 'z',那么第二个 if 又执行了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月1日
  • 已采纳回答 12月24日
  • 修改了问题 12月24日
  • 创建了问题 12月24日