c - 如何从 10 个字符串的数组中打印 5 个唯一的字符串

标签 c arrays random srand

我正在编写一个代码,该代码将从 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/

相关文章:

c - 结构数组的空闲内存

python - 有没有办法在 Pyspark 中动态猜测架构?

JavaScript for 循环混淆

arrays - Swift:将字符串中的单独字符与字典中的值匹配

perl - 洗牌 : influence of sort

c++ - Random.org 真正的随机 C++

c - 如何在 C 中使用 mktime 检查日期是否有效?

c - 检索 LDAP DN 的空属性

检查一个值是否存在于 Cython 的数组中

javascript - 如何使用javascript中的if语句根据随机数显示/隐藏文本(无jquery)