c语言彩票兑奖程序

Python012

c语言彩票兑奖程序,第1张

#include<stdio.h>

void main()

{

int a[]={1,2,3,4,5,6,7}

int b[7],i,j,count=0,max=0,maxflag

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

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

    i=0

while(i<7)

{

j=0

count=0

if(b[i]==a[j])

while(i<7 && j<7 && b[i]==a[j]) i++,j++,count++

else

i++

if(max<count)  {max =countmaxflag=i}

}

count = max

if(count==7) printf("特等奖\n")

else if(count==6)

{

if(maxflag==7)

printf("二等奖\n")

else

printf("一等奖\n")

}

else if(count==5)

{

if(maxflag==7)

printf("三等奖\n")

else

printf("二等奖\n")

}

else if(count==4)

{

if(maxflag==7)

printf("四等奖\n")

else

printf("三等奖\n")

}

else if(count==3)

{

if(maxflag==7)

printf("五等奖\n")

else

printf("四等奖\n")

}

else if(count==2 && maxflag!=7)

printf("五等奖\n")

else 

printf("没中奖\n")

}

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

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

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

#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>

int fun(int *a,int *b)

{ int i,j=0

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

{if(a[i]==b[i]&&a[i+1]==b[i+1])

j++

else

j=0

}

return j

}

void main()

{int i,k

int b[7],a[7]={0,1,2,3,4,5,6}

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

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

k=fun(a,b)

if(a[6]==b[6]&&k==6)

printf("特等奖")

else

switch(k)

{ case 0:printf("谢谢")break

case 4:printf("三等奖")break

case 5:printf("二等奖")break

case 6:printf("一等奖")break

}

}