gpt4 book ai didi

凯撒密码问题(C)

转载 作者:太空狗 更新时间:2023-10-29 16:12:08 25 4
gpt4 key购买 nike

此代码的目的是创建一个仅使用 3 个 key 对字母数字字符进行编码的凯撒密码,其中第一个字母由第一个 key 递增,第二个字符由第二个 key 递增,第三个字符由第三个 key 递增,第四个字符递增通过第一个键等...环绕 (Z + 1 --> a), (a - 1 --> Z).

我已经完全完成了作业,唯一的问题是我的负环绕不起作用 (a - 1 --> Z)。它要求输入键,接受输入,然后什么都不返回(但仍然允许用户键入并按回车键,但没有任何结果)。这是我的代码:

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>

char sentence[101] = { '\0' };
char alphabet[52]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

int locateletter(char tolocate){
int i=0;
for(i=0; i<52; i++){
if(alphabet[i] == tolocate)
return i;
}
}

int main(void){
int key1 = 0;
int key2 = 0;
int key3 = 0;
printf("Sentence: ");
scanf("%101[^\n]", sentence);
if( sentence[100] != '\0' ){
printf("You entered more than 100 characters. Block Caesar Cipher is exiting. Goodbye.\n");
exit;
}else{
printf("Keys: ");

scanf("%d %d %d", &key1, &key2, &key3);
int i=0;
for(i=0; i<100; i=i+3){
if(isalpha(sentence[i])){
int position = locateletter(sentence[i]);
while((position+key1)>51){
key1 = position+key1-52;
position=0;
}
while((position+key1)<0){
key1 = key1+position+52;
position=0;
}
sentence[i] = alphabet[position+key1];
}
}
int k=1;
for(k=1; k<100; k=k+3){
if(isalpha(sentence[k])){
int position = locateletter(sentence[k]);
while((position+key2)>51){
key2 = position+key2-52;
position=0;
}
while((position+key2)<0){
key1 = key2+position+52;
position=0;
}
sentence[k] = alphabet[position+key2];
}
}
int t=2;
for(t=2; t<100; t=t+3){
if(isalpha(sentence[t])){
int position = locateletter(sentence[t]);
while((position+key3)>51){
key3 = position+key3-52;
position=0;
}
while((position+key3)<0){
key1 = key3+position+52;
position=0;
}
sentence[t] = alphabet[position+key3];
}
}
printf("Cipher: %s\nDone.\n", sentence);

}
return 0;
}

最佳答案

我发现了错误。我的 while 负环绕循环将值分配给 key1 而不是 key2/3。

关于凯撒密码问题(C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26408909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com