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 }