C语言 实现模拟彩票的程序设计:随机产生7个数字(用C语言随机函数产生,[1,33]区间,七个数互

C语言 实现模拟彩票的程序设计:随机产生7个数字(用C语言随机函数产生,[1,33]区间,七个数互,第1张

使用结构体链表模拟彩票的摇奖机,来保证每次随机都是不同的数字

数组也可以模拟,但是删除元素比较麻烦,用链表更快捷。

定义数组指针,动态分配内存。

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

typedef struct List {

 int number

 struct List*next

} ArrayList

ArrayList*createList(int)//创建链表,参数是链表的节点数 

void freeList(ArrayList*)//循环释放所有节点的内存

int deleteNode(ArrayList*,int)//删除节点,返回节点的数据 

main() {

 //动态创建内存

 int*numbers=(int*)calloc(7,sizeof(int))

 int*inNumbers=(int*)calloc(7,sizeof(int))

 //动态创建数组链表存放1-33个编号

 ArrayList*balls= createList(33)

 int i

 srand((unsigned)time(NULL))

 printf("请输入7个不同的数字(1-33):\n")

 for(i=0 i<7 i++) {

  *(numbers+i)=deleteNode(balls,rand()%(33-i))

  scanf("%d",inNumbers+i)

 }

 printf("随机产生的7个数字是:\n")

 for(i=0 i<7 i++) {

  printf("%d ",*(numbers+i))

 }

 printf("\n相同的数字:\n")

 //查找

 int j

 for(i=0 i<7 i++) {

  for(j=0 j<7 j++) {

   if(*(numbers+i)==*(inNumbers+j)) {

    printf("%d ",*(numbers+i))

    break

   }

  }

 }

 //释放内存

 free(numbers)

 free(inNumbers)

 freeList(balls)

}

ArrayList*createList(int n) {

 ArrayList*head=NULL,*end=NULL,*node=NULL

 end=head=(ArrayList*)malloc(sizeof(ArrayList))//head在删除和插入节困衡点时有用。 不能删除head,也不能插入到head前面

 int i

 for(i=1 i<=n i++) {

  node=(ArrayList*)malloc(sizeof(ArrayList))

  node->number=i

  end->next=node

  end=node

 }

 end->next=NULL

 return head

}

void freeList(ArrayList*head) {

 ArrayList*node=head

 while(head!=NULL) {

  head=head->next

  free(node)

  node=head

 }

}

int deleteNode(ArrayList*head,int 汪物做index) { //index节点索引(0-32),返回被删除的球的编号

 ArrayList*node=head->next,*temp=head

 int i=0,number

 while(i<index&&node!=NULL) 蚂誉{

  temp=node

  node=node->next

  i++

 }

 if(node!=NULL) {

  number=node->number

  temp->next=node->next

  free(node)

 }

 return number

}

运行结果

#include <stdio.h>

main()

{

int p[7],q[7],n,i/****p:投注号码,q:开奖号孝族明码****/

char c='0'

st(p,q)/****初始巧告化****/

n=pd(p,q)

switch (n)

{

case 6:

{

if(p[6]==q[6]) c='!'

else c='1'

} break

case 5:

{

if(p[1]!=q[1]||p[4]!=q[4]) c='3'

if(p[2]!=q[2]||p[3]!=q[3]) c='0'

else c='2'

} break

case 4:

{

if((p[0]!=q[0]&&p[1]!=q[1])||(p[0]!=q[0]&&p[5]!=q[5])||(p[4]!=q[4]&&p[5]!=q[5]))

c='3'

else c='0'

}

}

switch (c )

{

case '!': printf("\nni zhong le te deng jiang!")break

case '1': printf("\nni zhong le 1 deng jiang!")break

case '2': printf("\nni zhong le 2 deng jiang!")break

case '3': printf("\nni zhong le 3 deng jiang!")break

case '0'穗枣: printf("\nni mei you zhong jiang!")break

}

getch()

}

st(int p[],int q[])

{

int i

printf("\nXuan zhe tou zhu hao ma: ")

for(i=0i<7i++)

scanf("%d",&p[i])

printf("\nKai jiang hao ma shi: ")

for(i=0i<7i++)

scanf("%d",&q[i])

}

pd(int p[],int q[])

{

int i,n=0

for(i=0i<6i++)

if(p[i]==q[i])

n++

return(n)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12564667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存