随机生成30个数字(范围0-30)存到一个数组中,将数组中重复的数字去除,动态创建数组保存剩下的数字

    int a[30]= {0};

   for (int i =0; i <30; i++) {

        a[i] =arc4random_uniform(31);

       printf("%d\t",a[i]);

       if ((i+1)%10 ==0) {

           printf("\n");

        }//每打印10个换行

    }

   printf("\n");

   int num =30;//计数器,看需要分配几个内存给动态数组

   for (int i =0; i <30; i++) {

       for (int j = i+1; j <30; j++) {

           if (a[j] == a[i] && a[j] !=31) {

                a[j] =31;

                num--;

            }

        }

    }

    printf("去除相同数字后 num=%d\n",num);

   int *p = (int *)malloc(num*sizeof(int));

   int count =0;

   for (int i =0; i <30; i++) {

       if (a[i] !=31) {

            *(p+count) = a[i];

           printf("%d\t",*(p+count));

            count++;

        }

       if (count%10==0) {

           printf("\n");

        }

    }

运行结果:

随机生成30个数字(范围0-30)存到一个数组中,将数组中重复的数字去除,动态创建数组保存剩下的数字_第1张图片


你可能感兴趣的:(C语言)