当前位置: 首页 > 知识库问答 >
问题:

凯撒密码重复字母

车峻熙
2023-03-14

基本上,我必须创建一个凯撒密码,它只是用一个int'k'以外的字母替换给出的每个字母。这需要2个命令行参数:“./caesar”和“k”,它们由用户提供。它工作得很好;但有一个问题:

它将“Barfoo”加密为“Eduirr”,使用3作为正确的密钥;将“Barfoo”加密为“Fevjss”,使用4作为正确的密钥

但是它不是用65作为密钥将“barfoo”加密为“onesbb”,而是将其加密为“oonneessbbbb”。

请注意标点符号;帽子之类的。

看到这里的问题了吗?它对其他随机单词也这样做;它重复字母。帮帮我...

#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, string argv[])
{
string s;
//int d;
int c;
int a;
if(argc != 2)
{   
    printf("Please run with a command line argument.");
    return 1;
}
else
{
    s = GetString();
}
int k = atoi(argv[1]);

for(int i = 0; i < strlen(s); i++)
    {
       a = s[i];
       if(a<'A'||a>'z')
       {
           printf(" ");
       }
       else
       {
           if(a>='A'&&a<='Z')
           {
               c = a+k;
               while(c>'Z')
               {
                   c = 'A'+(c-'Z')-1;
                   printf("%c", c);
               }

               if(c<='Z')
               {
                   printf("%c", c);
               }
           }
           else if(a>-'a'&&a<='z')
           {
               c = a+k;
               while(c>'z')
               {
                   c = 'a'+(c-'z')-1;
                   printf("%c", c);
               }
               if(c<='z')
               {
                   printf("%c", c);
               }
           }
       }
    }
printf("\n");
}

共有1个答案

孔斌
2023-03-14

您可以尝试使用k%26,因为它应该环绕字母表的字符。那应该能解决你的问题。

 类似资料:
  • 我需要编写一个python、hacker和wow这些单词的加密文本,并且使用不包括使用RAW_INPUT的python中的凯撒密码,距离为3。这是我到目前为止,但我不断得到一个错误消息,我不知道如何修复它。

  • 问题内容: 我通过java进行了凯撒密码,它可以运行,但是在用户输入密钥后不对任何内容进行加密! 这是我的代码 跑: 问题答案: 使用效率不是很高…您可以对值进行整数运算以获得其索引。 我在代码中添加了注释以解释更多信息,但这就是我想出的。 输出应该是这样的

  • 因此,目前我的凯撒密码程序运行良好,每当我使用小写字母。但是,当我用大写输入一个单词或短语时,我想让它工作。这是我现在有的代码。希望你们能帮我完成这件事。 def encrypt(消息,距离):“”将获取消息并将其旋转到距离,以创建加密消息“” def decrypt(消息,距离):“”“将解密上面的消息”“” def binaryConversion(消息):“”“将把单词转换成二进制代码”“

  • 示例:返回。如果给定的整数值小于0或大于26,则应返回空字符串。 我的问题是,作为回报,它只给我真或假。如何解决这个问题:该方法应该返回一个字符串,其中每个字符都是根据指定的整数值移动的。

  • 我在做凯撒密码,这是我的密码 我尝试使用%来解决这个问题(我也不是100%确定如何使用模运算符),但我没有成功。 文本文件的内容是: