当前位置: 代码迷 >> C语言 >> 一个有意思的小程序(体育彩票)
  详细解决方案

一个有意思的小程序(体育彩票)

热度:685   发布时间:2004-05-06 00:00:00.0
一个有意思的小程序(体育彩票)
我不会做复杂的主要知识有限:) (丢人了!) /* 模拟体育彩票机 */ #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; } }

[此贴子已经被作者于2004-05-06 00:02:30编辑过]

搜索更多相关的解决方案: 体育彩票  int  seqlist  include  

----------------解决方案--------------------------------------------------------

头文件: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; }


----------------解决方案--------------------------------------------------------

有时间定要运行!

顶起先!


----------------解决方案--------------------------------------------------------
有HTML码不好看
----------------解决方案--------------------------------------------------------
打个包上来
----------------解决方案--------------------------------------------------------
顶一下
----------------解决方案--------------------------------------------------------

虽然没看全 但是还是顶一下先

主要是html 太麻烦 碍眼


----------------解决方案--------------------------------------------------------
发贴时,能不能高点质量,如果再这样你是自己搬起石头砸自己啊。
----------------解决方案--------------------------------------------------------
希望论坛上有多些这样的程序,当然,是要正确的.这样有利于新手学习.

[此贴子已经被作者于2004-07-01 16:03:15编辑过]



----------------解决方案--------------------------------------------------------

我么没有运行成功?????


----------------解决方案--------------------------------------------------------