5注21选5升序彩票(室友一下午才解决,我只用了1个小时,得瑟一下子)

来源:互联网 发布:学习数据库心得体会 编辑:程序博客网 时间:2024/04/30 03:39

//

// main.c

//

大笑

// Created by LongMa on 15/8/5.

//  Copyright (c) 2015 itcast. All rights reserved.

/*  5215升序彩票  

    5 随机产生 1-21之间5个不相同的数,再升序。

    1.5--最外层循环 5

   2.  

        2.1随机产生 1-21之间5个不相同的   arc4产生,从第二个(定义数组存储)产生的开始与之前产生的判断,相同就重新生成,直到产生5个。

        2.2对数组中5个人进行升序冒泡

        2.3输出这5个数

 */

 

#include<stdio.h>

#include<stdlib.h>

 

voidexchange(int a[5],int i,int j)//指针访问数组地址取值,实现主函数数组中值的交换

{

    int *p = a;

    int temp = *(p + i );

    *(p + i)= *(p + j);

    *(p + j)= temp;

}

int main(intargc,constchar* argv[])

{

    // insertcode here...

   for (int l =0; l <5;l++)//1. 5组!

    {

  

    /*2.1  */

       int a[5];

       a[0]=arc4random_uniform(21) +1;

       

       for (int i =1; i <5 ;)//i++放下面方便理解

       {

           a[i] = arc4random_uniform(21) + 1;

          for (int j =0 ; j <= i -1 ; j++)//判断是否与之前的相同。 i ==1,只需要比较 a1】和a0

           {

               if (a[i]== a[j])

               {

                   i--;//a[1] == a[0]时,i自减为 0

                  break;//万一正好跟a0】相同,跳出判断。不做多余的比较。提高效率

               }

 

           }

            i++;//i自增,  成功产生5个不同数后,i == 5

       }

       

        /* 2.2 对数组中5个人进行升序冒泡 */

       for (intj = 0; j <= 3; j++)

       {

          for (int i =0; i <=3 - j; i++)//内循环大数跑到最右边

           {

                   if(a[i] > a[i + 1])

                   {

                      exchange(a,i,i +1);

                   }

               

           }

       }

       

       /*  2.3 输出这5个数  */

       for (intk =0; k <5;k++)

       {

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

       }

       printf("\n");

       

    }

       return 0;

}


0 0