⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 模拟体育彩票机.c

📁 用c语言模拟体育彩票机
💻 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 + -