c语言彩
发布时间: 2023-09-24 07:07:05
Ⅰ c语言 实现模拟彩票的程序设计:随机产生7个数字(用C语言随机函数产生,[1,33]区间,七个数互
使用结构体链表模拟彩票的摇奖机,来保证每次随机都是不同的数字。
数组也可以模拟,但是删除元素比较麻烦,用链表更快捷。
定义数组指针,动态分配内存。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedefstructList{
intnumber;
structList*next;
}ArrayList;
ArrayList*createList(int);//创建链表,参数是链表的节点数
voidfreeList(ArrayList*);//循环释放所有节点的内存
intdeleteNode(ArrayList*,int);//删除节点,返回节点的数据
main(){
//动态创建内存
int*numbers=(int*)calloc(7,sizeof(int));
int*inNumbers=(int*)calloc(7,sizeof(int));
//动态创建数组链表存放1-33个编号
ArrayList*balls=createList(33);
inti;
srand((unsigned)time(NULL));
printf("请输入7个不同的数字(1-33): ");
for(i=0;i<7;i++){
*(numbers+i)=deleteNode(balls,rand()%(33-i));
scanf("%d",inNumbers+i);
}
printf("随机产生的7个数字是: ");
for(i=0;i<7;i++){
printf("%d",*(numbers+i));
}
printf(" 相同的数字: ");
//查找
intj;
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(intn){
ArrayList*head=NULL,*end=NULL,*node=NULL;
end=head=(ArrayList*)malloc(sizeof(ArrayList));//head在删除和插入节点时有用。不能删除head,也不能插入到head前面
inti;
for(i=1;i<=n;i++){
node=(ArrayList*)malloc(sizeof(ArrayList));
node->number=i;
end->next=node;
end=node;
}
end->next=NULL;
returnhead;
}
voidfreeList(ArrayList*head){
ArrayList*node=head;
while(head!=NULL){
head=head->next;
free(node);
node=head;
}
}
intdeleteNode(ArrayList*head,intindex){//index节点索引(0-32),返回被删除的球的编号
ArrayList*node=head->next,*temp=head;
inti=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);
}
returnnumber;
}
运行结果
Ⅱ 用c语言写一个彩票55选5的代码,怎么写
C语言不了解不过思路这样
用随即函数产生一个数字
然后做个IF从句再产生一个,和前1个比,一样的话就再循环再产生一个
总之产生一个数就和前面的所有数字相比,看看有没有一样的有一样的就再循环产生
流程图
AA:I=I+1
BB:产成一个数
CC: 保存到数组A(I)
DD:如果I不等于1(第一次没的比),则比较A(I)和(1)~(I-1)数组中的有无相同(这里用FOR语句循环)
EE:有则跳转到BB,无则跳转到AA(这里了解FOR的话可以用FOR,不了解的话可以用IF GOTO代替)
Ⅲ c语言彩票兑奖程序
#include<stdio.h>
voidmain()
{
inta[]={1,2,3,4,5,6,7};
intb[7],i,j,count=0,max=0,maxflag;
for(i=0;i<7;i++)
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=count;maxflag=i;}
}
count=max;
if(count==7)printf("特等奖 ");
elseif(count==6)
{
if(maxflag==7)
printf("二等奖 ");
else
printf("一等奖 ");
}
elseif(count==5)
{
if(maxflag==7)
printf("三等奖 ");
else
printf("二等奖 ");
}
elseif(count==4)
{
if(maxflag==7)
printf("四等奖 ");
else
printf("三等奖 ");
}
elseif(count==3)
{
if(maxflag==7)
printf("五等奖 ");
else
printf("四等奖 ");
}
elseif(count==2&&maxflag!=7)
printf("五等奖 ");
else
printf("没中奖 ");
}
热点内容