兑奖

View Code
  1 #include<time.h> 
  2 #include<stdlib.h> 
  3 #include<stdio.h>
  4 
  5 int cmp(const void *a,const void *b)
  6 {
  7     return *(int *)a-*(int *)b;
  8 }
  9 
 10 void SJS(int p[])//主办方产生随机数
 11 {
 12     int i,j,k,c=0; 
 13     srand((int)time(0));
 14     k=1+(int)(22.0*rand()/(RAND_MAX+1.0)); 
 15     for(i=0;i<6;) 
 16     {
 17         k=1+(int)(22.0*rand()/(RAND_MAX+1.0)); 
 18         for(j=0;j<i;j++)
 19         {
 20             if(k==p[j])
 21                 break;
 22         }
 23         if(j>=i)
 24         {
 25             p[i]=k;
 26             i++;
 27         }
 28     }     
 29 }
 30 
 31 void Select(int f[])//抽奖 5个数
 32 {
 33     printf("请从1~22之间任意选取5个不同的整数作为投注号码:\n");
 34     int i=0,j,k=0;
 35     for(i=0;i<5;i++)
 36         scanf("%d",&f[i]);
 37     qsort(f,5,sizeof(f[0]),cmp);
 38     while(!k)
 39     {
 40         for(i=0;i<5;i++)
 41             if(f[i]<1||f[i]>22)
 42             { 
 43                 k=0; 
 44                 break;
 45             }
 46             if(i>=5)  k=1;
 47             if(k)
 48             {
 49                 for(j=1;j<5;j++)
 50                     if(f[j]==f[j-1])
 51                     {
 52                         k=0;
 53                         break;
 54                     }
 55                     if(j==5) k=1;
 56             }
 57             
 58             if(k==0)
 59             {
 60                 printf("输入错误!请从1~22之间任意选取5个不同的整数作为投注号码:\n");
 61                 for(i=0;i<5;i++)
 62                     scanf("%d",&f[i]);
 63                 qsort(f,5,sizeof(f[0]),cmp);
 64             }
 65     }
 66 }
 67 
 68 int check(int p[],int f[])
 69 {
 70     int i,j,count=0,k=0;//k标记是否抽到与 p[5] 相等的数
 71     
 72     for(i=0;i<5;i++)//对比
 73     {
 74         for(j=0;j<5;j++)
 75             if(f[i]==p[j])
 76             {count++;break;}
 77     }
 78     for(i=0;i<5;i++)
 79         if(f[i]==p[5])
 80         {k=1;break;}
 81         
 82         if(count==5)//头等奖
 83             return 1;
 84         else if(count==4 && k)//二等奖
 85             return 2;
 86         else if(count==4 && !k)//三等奖
 87             return 3;
 88         else if(count==3)//四等奖
 89             return 4;
 90         else if(count==2)//五等奖
 91             return 5;
 92         else
 93             return 0;
 94 }
 95 
 96 void win(int k)
 97 {
 98     if(k==1)
 99         printf("恭喜你!!!中了头等大奖!\n");
100     else if(k==2)
101         printf("恭喜你!!!中了二等大奖!\n");
102     else if(k==3)
103         printf("恭喜你!!!中了三等大奖!\n");
104     else if(k==4)
105         printf("恭喜你!!!中了四等大奖!\n");
106     else if(k==5)
107         printf("恭喜你!!!中了五等大奖!\n");
108     else
109         printf("本次未中奖,谢谢参与!祝你下次好运!\n");
110 }
111 void print()
112 {
113     printf("------------操作------------\n");
114     printf("|抽奖,            请选择1 |\n");
115     printf("|大奖设置,        请选择2 |\n");
116     printf("|退出本期抽奖,    请选择0 |\n");
117     printf("----------------------------\n");
118     
119 }
120 
121 int main() 
122 { 
123     int f[5],i,k,h,Case=1,y;
124     int P[6];
125     
126     printf("                          ********************************\n");
127     printf("                          *         大奖等你拿!!!        *\n");
128     printf("                          ********************************\n");
129     printf("\n\n");
130     while(1)
131     {
132         printf("*************************************第%d期抽奖**********************************\n",Case);
133         printf("选择1    开始\n");
134         printf("选择0    退出\n");
135         printf("选择:");
136         scanf("%d",&y);
137         if(y==0) break;
138         else if(y==1)
139         {
140             SJS(P);//主办方的随机数
141             Case++;
142             while(1)
143             {
144                 print();
145                 printf("请选择:");
146                 scanf("%d",&h);
147                 if(h==0)
148                 {
149                     printf("本期抽奖结束!!!\n");
150                     printf("大奖号为:");
151                     for(i=0;i<5;i++)
152                         printf("%d  ",P[i]);
153                     printf("特别号为:");
154                     printf("%d\n",P[5]);
155                     break;
156                 }
157                 else if(h==1)
158                 {
159                     
160                     Select(f);//抽奖
161                     k=check(P,f);
162                     win(k);
163                 }
164                 else if(h==2)
165                 {
166                     printf("---------兑--------奖----------方-----------式----------\n");
167                     printf("|头等奖:5个号码与5个暗码完全相同                        |\n");
168                     printf("|二等奖:4个号码与4个暗码完全相同,另一个号码与特别号相同|\n");
169                     printf("|三等奖:4个号码与4个暗码完全相同,另一个号码与特别号不同|\n");
170                     printf("|四等奖:3个号码与3个暗码完全相同                        |\n");
171                     printf("|五等奖:2个号码与2个暗码完全相同                        |\n");
172                     printf("|大奖号码将在本期结束公布                               |\n");
173                     printf("---------------------------------------------------------\n");
174                 }
175             }
176         }
177     }
178     printf("结束,谢谢参与!!!\n");
179     return 0;    
180 } 
原文地址:https://www.cnblogs.com/zlyblog/p/2554613.html