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 }