我正在编写一个代码,该代码将从 10 个字符串的数组中打印 5 个唯一且随机的字符串。但是我的代码并没有唯一地打印它,总是有一些重复。 这是我的代码,任何人都可以建议如何使其打印唯一吗?
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void main(void){
char arr[10][10]={"abc","def","ghi","klm","nop","qrs","tuv","wxy","zab","cde"};
int i=0,j=0;
srand(time(0));
for(i=0;i<5;i++){
j=rand()%10;
printf("%d\n",j);
}
}
最佳答案
只记住已经打印出来的idices:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
char arr[10][10] = {"abc","def","ghi","klm","nop","qrs","tuv","wxy","zab","cde"};
int i = 0, j = 0;
int done[10] = { 0 };
srand(time(0));
for (i = 0; i < 5; ++i)
{
do
{
j = rand()%10;
}
while (done[j] == 1);
done[j] = 1;
printf("%s\n", arr[j]);
}
return 0;
}
关于c - 如何从 10 个字符串的数组中打印 5 个唯一的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25462692/