?? 模擬體育彩票機.c
字號:
#include <stdio.h>
#include <time.h>
#include <conio.h>
/*抽取時間控制*/
#define max 120
typedef int datatype;
#include "seqlist.h"
rand(seqlist *l,int n);
write(seqlist *l,int n);
void take_out();
int a[7];
int main()
{
seqlist *l;
int i,j,n,k=0;
srand((int)time(0));
printf("您要買多少注?");
scanf("%d",&n);
printf("一共%d元\n",n*2);
l=(seqlist *)malloc(n*sizeof(seqlist));
if(l==null)
{
puts("overflow!");
exit(1);
}
for(i=0;i<n;i++)
setlist(&l,7);
printf("1.機選 2.自選");
while(k!=1&&k!=2)
scanf("%d",&k);
if(k==1)
rand(l,n); /* 機選 */
else
write(l,n); /* 自選 */
printf("抽獎開始\n");
take_out();
printf("本期開獎號碼為:");
for(i=0;i<7;i++)
printf("%d ",a);
printf("\n");
for(i=0;i<n;i++)
{
k=0;
for(j=0;j<7;j++)
{
if(a[j]==getdata(&l,j)) /* 當對應都一樣時 */
k++;
}
printf("您第%d注號碼為: ",i+1);
for(j=0;j<7;j++)
printf("%d ",getdata(&l,j));
printf(" 一共中了%d個號\n",k);
}
for(i=0;i<n;i++)
{
freelist(&l);
clearlist(&l);
}
free(l);
return 0;
}
rand(seqlist *l,int n) /* 機選 */
{
int i,j,a;
for(i=0;i<n;)
{
for(j=0;j<7;j++)
{
if(j==6)
insertrear(&l,rand()%8); /* 隨即抽取特別號碼 */
else
insertrear(&l,rand()%10); /* 隨即抽取一般號碼 */
}
printf("您隨即抽取的第%d注號碼為:",i+1);
for(j=0;j<7;j++)
printf("%d ",getdata(&l,j));
printf("\n1.繼續 2.此注重抽:");
scanf("%d",&a);
if(a==2)
{
freelist(&l);
clearlist(&l);
continue;
}
else
i++;
}
}
write(seqlist *l,int n) /* 自選 */
{
int i,j,a1;
datatype k=-1;
for(i=0;i<n;)
{
printf("第%d注:\n",i+1);
for(j=0;j<7;j++)
{
if(j==6)
{
while(1)
{
printf("請輸入第%d個號",j+1);
scanf("%d",&k);
if(k<7&&k>0) break;
}
insertrear(&l,k);
}
else
{
while(1)
{
printf("請輸入第%d個號",j+1);
scanf("%d",&k);
if(k<9&&k>0) break;
}
insertrear(&l,k);
}
}
printf("您選取的第%d注號碼為:",i+1);
for(j=0;j<7;j++)
printf("%d ",getdata(&l,j));
printf("\n1.繼續 2.此注重抽:");
scanf("%d",&a1);
if(a1==2)
{
freelist(&l);
clearlist(&l);
continue;
}
else
i++;
}
}
void take_out()
{
int i,j=0;
printf("按任意鍵開始抽獎\n");
getch();
for(i=0;i<7;i++)
{
if(i==6)
{
while(j<max)
{
a=rand()%8;
if(j==1)
{printf("即將開出的特別號碼是");
sleep(1);
}
printf("%d",a);
delay(1000);
clrscr();
j++;
}
printf("特別號碼為:%d\n",a[6]);
clrscr();
}
else
{
while(j<max)
{
a=rand()%10;
if(j==1)
{printf("即將開出的第%d號碼是");
sleep(1);
}
printf("%d",a);
delay(1000);
clrscr();
j++;
}
printf("開出的第%d個號為:%d\n",i+1,a);
sleep(2);
}
j=0;
}
}
文件名:seqlist.h
#include <stdlib.h>
typedef struct
{
DataType *data; /* data是動態數組*/
int max,size; /* max是數組長度,size是元素個數*/
}SeqList;
void SetList(SeqList *L,int n) /* 構造函數,建立數組長度為n的空表*/
{
L->data=(DataType*)malloc(n*sizeof(DataType));
if(L->data==NULL)
{
puts("overflow");
exit(1);
}
L->max=n;
L->size=0;
}
void FreeList(SeqList *L) /* 析構函數,釋放數組空間 */
{
free(L->data);
}
int ListSize(SeqList *L) /* 求表長,返回值是表中元素個數 */
{
return L->size;
}
int ListEmpty(SeqList *L) /* 判空 */
{
if(L->size==0)
return 1;
return 0;
}
int ListFull(SeqList *L) /* 判滿 */
{
if(L->size==L->max)
return 1;
return 0;
}
DataType GetData(SeqList *L,int pos) /* 取線性表中下標為pos的元素 */
{
if(pos<0||pos>L->size-1)
{
puts("Pos out of range!");
exit(1);
}
return L->data[pos];
}
int Locate(SeqList *L,DataType item) /* 定位,返回元素item在線性表中的下標 */
{
int i=0;
while(i<L->size-1&&item!=L->data)
i++;
if(i<=L->size-1)
return i;
return -1; /* 表中無元素item,返回-1 */
}
void SetData(SeqList *L,DataType item,int pos) /* 用item更新表中下標為pos的元素 */
{
if(pos<0||pos>L->size-1)
{
puts("Pos out of range!");
exit(1);
}
L->data[pos]=item;
}
void Insert(SeqList *L,DataType item,int pos) /* 在表中下標pos位置插入元素item */
{
int i=0;
if(pos<0||pos>L->size-1)
{
puts("Pos out of range!");
exit(1);
}
if(L->size==L->max)
{
puts("SeqList is full!");
exit(1);
}
for(i=L->size;i!=pos;i--)
L->data=L->data[i-1];
L->data[pos]=item;
L->size++;
}
void InsertRear(SeqList *L,DataType item) /* 尾插 */
{
if(L->size==L->max)
{
puts("SeqList is full!");
exit(1);
}
L->data[L->size]=item;
L->size++;
}
void DeleteList(SeqList *L,int pos) /* 刪除表中下標為pos的元素 */
{
int i=0;
if(L->size==0)
{
puts("SeqList is empty!");
exit(1);
}
if(pos<0||pos>L->size-1)
{
puts("Pos out of range!");
exit(1);
}
for(i=pos+1;i<L->size-1;i++)
L->data[i-1]=L->data;
L->size--;
}
void ClearList(SeqList *L) /* 清表 */
{
L->size=0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -