gpt4 book ai didi

c - Tabular Recta 表未正确生成

转载 作者:太空宇宙 更新时间:2023-11-04 02:37:50 24 4
gpt4 key购买 nike

我正在为 vigenere 密码构建一个 tabula recta 表,出于某种原因,它在第一个循环后打印 '@' 而不是 'a'。这是我的代码:

#include <stdio.h>

int
main (void)
{
char alph[26] = "abcdefghijklmnopqrstuvwxyz";
char tRecta[26][26] = {0}; //Tabular Recta

int i,k,j = 0;
for(i=0;i<26; i++) { //Build tabular recta
for(k=0; k<26; k++) {
if((j+k) > 26) {
tRecta[i][k] = alph[(j+k)-26];
} else {
tRecta[i][k] = alph[(j+k)];
}
}
j++;
}

for(i=0;i<26;i++) {
for(k=0;k<26;k++) {
printf("%c",tRecta[i][k]);
}
printf("\n");
}
return 0;
}

这是我得到的:

abcdefghijklmnopqrstuvwxyz
bcdefghijklmnopqrstuvwxyz@
cdefghijklmnopqrstuvwxyz@b
defghijklmnopqrstuvwxyz@bc
efghijklmnopqrstuvwxyz@bcd
fghijklmnopqrstuvwxyz@bcde
ghijklmnopqrstuvwxyz@bcdef
hijklmnopqrstuvwxyz@bcdefg
ijklmnopqrstuvwxyz@bcdefgh
jklmnopqrstuvwxyz@bcdefghi
klmnopqrstuvwxyz@bcdefghij
lmnopqrstuvwxyz@bcdefghijk
mnopqrstuvwxyz@bcdefghijkl
nopqrstuvwxyz@bcdefghijklm
opqrstuvwxyz@bcdefghijklmn
pqrstuvwxyz@bcdefghijklmno
qrstuvwxyz@bcdefghijklmnop
rstuvwxyz@bcdefghijklmnopq
stuvwxyz@bcdefghijklmnopqr
tuvwxyz@bcdefghijklmnopqrs
uvwxyz@bcdefghijklmnopqrst
vwxyz@bcdefghijklmnopqrstu
wxyz@bcdefghijklmnopqrstuv
xyz@bcdefghijklmnopqrstuvw
yz@bcdefghijklmnopqrstuvwx
z@bcdefghijklmnopqrstuvwxy

我以前没怎么用过 C,是不是 printf("%c",tRecta[i][k]); 没有完全按照我的想法去做?

最佳答案

您越界访问了数组。将 if((j+k) > 26) 更改为 if((j+k) >= 26),因为数组 alph 的最后一个有效索引25 而不是 26。另一种解决方案是使用 % 操作:

#define ARR_SIZE 26

int i,k,j = 0;
for( i=0; i<ARR_SIZE; i++ ) { //Build tabular recta
for( k=0; k<ARR_SIZE; k++ ) {
tRecta[i][k] = alph[ (j+k) % ARR_SIZE ];
}
j++;
}

请注意,您阅读了 alph[26]。这是未定义的行为。

关于c - Tabular Recta 表未正确生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35161528/

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