我正在编写一个编码和一个解码程序,所以我需要使用rand创建一个字母数组,以便它被洗牌。我的下面的代码导致重复的字母。如何使用rand函数显示26个字母中的每一个? 我确实尝试创建一个使用过的字符数组,但这导致了字符'a' - 'z'之外的字符,大多数是空格。
int main(int argc, char *argv[]) {
int key, currch, i;
char plain[] = "abcdefghijklmnopqrstuvwxyz";
char coded[26];
key = atoi(argv[1]);
srand((unsigned)key);
for(i=0; i<26; i++) {
coded[i] = 'a' + rand() % 26;
}
// testing to see what is in the array
i=0;
while(i<26) {
printf("%c ", coded[i]);
i++;
}
}
使用33作为种子时的输出是
z h w p b i h x c q u m a v u v f u k u j j d s y g
如您所见,有重复项(u,v,j)
感谢您的反馈!
答案 0 :(得分:2)