大家好!今天让小编来大家介绍下关于随机抽奖程序(怎么设计一个抽奖的程序)的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
文章目录列表:
本文目录
怎么设计一个抽奖的程序
先把各种可能性存在一个数组里。比如10个纸条上各有一句话,只有抽中某句话才算中奖,那么就把这十句话以字符串形式存放在数组A中。
然后就可以开始抽奖了。
用户选择抽奖,程序就使用rand函数生成一个随机数N,求N%10就能得到一个介于0到9之间的整数 i ,然后看A的值是否是那个中奖的字符串,是就中奖。
当然了,你可以设计得复杂些,但原理就是这样了。
怎样用C#制作一个随机数抽奖的程序
提供一个思路给你,你可以把抽奖号添加到一组数列里,一般使用数据库存储,并且自动编排号码。
使用随机数random函数随机1-你的号码数量,获得这个号码的排位数,即为获奖号码。
C语言根据随机数编写一个抽奖程序
#include《stdio.h》
#include 《conio.h》
#include 《stdlib.h》
#include 《memory.h》
#include 《string.h》
#include 《time.h》
#define AWARDER_NUM 10
typedef struct tag_award
{
char ID;
char name;
char telNo;
char address;
}AWARDER;
AWARDER * awarder = new AWARDER;
int first_award = {-1};
int second_award = {-1,-1};
int third_award ={-1,-1,-1,-1,-1};
int awarder_num = 0;
void info_login()
{
if(awarder_num 》= AWARDER_NUM)
{
AWARDER * new_awarder = new AWARDER;
memcpy(new_awarder,awarder,awarder_num*sizeof(AWARDER));
delete awarder;
awarder = new_awarder;
}
printf(“身份证号:“);
scanf(“%s“,awarder.ID);
printf(“姓名:“);
scanf(“%s“,awarder.name);
printf(“电话号码:“);
scanf(“%s“,awarder.telNo);
printf(“家庭住址:“);
scanf(“%s“,awarder.address);
awarder_num++;
}
void info_delete()
{
char name;
printf(“输入您要删除的抽奖者的姓名:“);
scanf(“%s“,name);
for(int i=0;i《awarder_num;i++)
{
if (strcmp(awarder.name,name) == 0)
{
printf(“您选择删除的抽奖者的信息如下:\n“);
printf(“身份证号:%s\n“,awarder.ID);
printf(“姓名:%s\n“,awarder.name);
printf(“电话号码:%s\n“,awarder.telNo);
printf(“家庭住址:%s\n“,awarder.address);
break;
}
}
if(i == awarder_num)
{
printf(“没有找到您输入的抽奖者!\n“);
}
else
{
char c;
printf(“您确定要删除吗?(Y//N)“);
fflush(stdin);
scanf(“%c“,&c);
if(c == ’Y’ || c == ’y’)
{
AWARDER * new_award = new AWARDER;
if(i 《= 0)
memcpy(new_award,awarder+1,sizeof(AWARDER) * (awarder_num - 1));
else if( i 》= awarder_num -1)
memcpy(new_award,awarder,sizeof(AWARDER) * (awarder_num - 1));
else
{
memcpy(new_award,awarder,sizeof(AWARDER) * i);
memcpy(new_award+i,awarder+i+1,sizeof(AWARDER) * (awarder_num - i - 1));
}
awarder_num--;
delete awarder;
awarder = new_award;
}
}
}
void info_modify()
{
char name;
printf(“输入您要修改的抽奖者的姓名:“);
scanf(“%s“,name);
for(int i=0;i《awarder_num;i++)
{
if (strcmp(awarder.name,name) == 0)
{
printf(“您选择的抽奖者的信息如下:\n“);
printf(“身份证号:%s\n“,awarder.ID);
printf(“姓名:%s\n“,awarder.name);
printf(“电话号码:%s\n“,awarder.telNo);
printf(“家庭住址:%s\n“,awarder.address);
break;
}
}
if(i == awarder_num)
{
printf(“没有找到您输入的抽奖者!\n“);
}
else
{
printf(“请输入该抽奖者的新信息:\n“);
printf(“身份证号:“);
scanf(“%s“,awarder.ID);
printf(“姓名:“);
scanf(“%s“,awarder.name);
printf(“电话号码:“);
scanf(“%s“,awarder.telNo);
printf(“家庭住址:“);
scanf(“%s“,awarder.address);
}
}
bool check_over(int cur_award,int awarderNo)
{
if(awarderNo == 1)
{
if(cur_award == first_award)
return true;
}
else if(awarderNo 《= 3)
{
if(cur_award == first_award)
return true;
for(int i=0;i《awarderNo-1;i++)
if(cur_award == second_award)
return true;
}
else if(awarderNo 《= 8)
{
if(cur_award == first_award)
return true;
for(int i=0;i《2;i++)
if(cur_award == second_award)
return true;
for(i=0;i《awarderNo-3;i++)
if(cur_award == third_award)
return true;
}
return false;
}
void award()
{
if(awarder_num 《 8)
{
printf(“人数太少,请添加足够的人再抽奖!\n“);
return;
}
srand((long)time(0));
char hit_id;
printf(“\n开始抽第一等奖(1名),按任意键开始...\n“);
getch();
while(!kbhit())
{
first_award = rand() % awarder_num;
memcpy(hit_id,awarder.ID,18);
printf(“\r “);
printf(“\r %s“,hit_id);
}
printf(“\n\n开始抽第二等奖(2名)“);
for (int i=0;i《2;i++)
{
printf(“\n第%d个二等奖,按任意键开始...\n“,i+1);
getch();
while(!kbhit())
{
second_award = rand() % awarder_num;
while(check_over(second_award,1+i))
second_award = rand() % awarder_num;
memcpy(hit_id,awarder.ID,18);
printf(“\r “);
printf(“\r %s“,hit_id);
}
}
printf(“\n\n开始抽第三等奖(5名)“);
for (i=0;i《5;i++)
{
printf(“\n第%d个三等奖,按任意键开始...\n“,i+1);
getch();
while(!kbhit())
{
third_award = rand() % awarder_num;
while(check_over(third_award,3+i))
third_award = rand() % awarder_num;
memcpy(hit_id,awarder.ID,20);
printf(“\r “);
printf(“\r %s“,hit_id);
}
}
}
void info_show()
{
printf(“一等奖获得者:\n“);
printf(“\t身份证号:%s\n“,awarder.ID);
printf(“\t姓名:%s\n“,awarder.name);
printf(“\t电话号码:%s\n“,awarder.telNo);
printf(“\t家庭住址:%s\n“,awarder.address);
printf(“二等奖获得者:\n“);
for (int i=0;i《2;i++)
{
printf(“第%d个二等奖获得者:\n“);
printf(“\t身份证号:%s\n“,awarder.ID);
printf(“\t姓名:%s\n“,awarder.name);
printf(“\t电话号码:%s\n“,awarder.telNo);
printf(“\t家庭住址:%s\n“,awarder.address);
}
printf(“三等奖获得者:\n“);
for (int i=0;i《5;i++)
{
printf(“第%d个三等奖获得者:\n“);
printf(“\t身份证号:%s\n“,awarder.ID);
printf(“\t姓名:%s\n“,awarder.name);
printf(“\t电话号码:%s\n“,awarder.telNo);
printf(“\t家庭住址:%s\n“,awarder.address);
}
}
/*提示信息*/
bool raise()
{
printf(“\n请输入你需要的操作代号:\n“);
printf(“\t1.录入:完成抽奖者信息的输入;\n“);
printf(“\t2.删除:完成抽奖者信息的删除;\n“);
printf(“\t3.修改:允许对已经录入的数据重新进行、修改;\n“);
printf(“\t4.抽奖:开始抽奖!\n“);
printf(“\t5.显示:显示所有中奖者的信息;\n“);
printf(“\t6.退出。\n“);
printf(“==》“);
int operate;
fflush(stdin);
scanf(“%d“,&operate);
switch(operate)
{
case 1:
info_login();
break;
case 2:
info_delete();
break;
case 3:
info_modify();
break;
case 4:
award();
break;
case 5:
info_show();
break;
case 6:
return false;
default:
break;
}
printf(“\n操作完成。\n“);
return true;
}
void main()
{
while(raise());
}
急需C++ 随机抽奖程序
#include 《iostream》
#include 《time.h》using namespace std;
void main()
{ srand(unsigned(time(NULL)));
int m,n;
cout《《“请输入可能得奖的人数:“;
cin》》m;
n = rand()%m+1;
cout《《“得奖的人是“《《n《《“号观众!!!“;
}
汇编语言实现随机抽奖
你可以这样,首先把这些数无规律的放到32个空间中去,再用DPTR指向他们中的第一个,后面对DPTR自加,每次回到最后一个数存放的位置时,便让其从头再自加。由于数子存放 是乱序的,加上程序的执行速度很快,这样你每次抽取的数也能保证是随机的。
MOV R0,#00H ;用来记录你是第几次抽取,并在LOOP5中用目前抽取的跟前面抽取出来的对比,如果跟前面的一样便选择用这一空间后的那个值,重复对比,确定不再相同为止.
MOV DPTR,1000H
MOV A,01
LOOP1:
MOVX @DPTR,A
INC DPTR
INC A
CJNE A,32,LOOP1
;;;;;;;;;;以下是程序一直处于自动运行状态;;;;;
LOOP3:
MOV DPTR,1000H
LOOP2:
INC DPTR
MOV A,DPL
CJNE A,20H,LOOP2
LJMP LOOP3
;;;;;;抽出程序,可以使用中断;;;;当有断时进入以下程序,到于中断怎么弄,那是你硬件的问题了;;;
INTER:
CLR EA
LOOP7:
MOV R3,R0
MOV R2,#20H
LOOP5:
MOVX A,@DPTR
CLR CY
SUBB A,@R2
JZ LOOP6
DEC R3
JNZ LOOP5
LJMP Get-it
LOOP6:
INC DPTR
MOV A,DPL
CJNE A,21H,LOOP5
MOV DPTR 1000H
LJMP LOOP7
get-it:
movx a,@dptr
mov @r2,a
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;后面你用你显示程序把20H开始的单元的数显示出来就行了;;;程序应该大都没问题,有些细节你可以自己调试一下。.
vb设计随机抽奖程序
’5个文本框改成控件数组,索引从0到4
Private isStop As Boolean
Private Sub Command1_Click() ’数字滚动
Randomize
Dim rndIndex As Integer
isStop = False
Do Until isStop ’循环语句滚动数字太快了,应该放在时钟控件中较好,可以控制速度
rndIndex = Int(Rnd * 5) ’产生一个随机的文本框数组索引
Text1(rndIndex) = (Val(Text1(rndIndex)) + 1) Mod 10 ’对文本框增加一个值
DoEvents
Loop
End Sub
Private Sub Command2_Click() ’停止滚动
isStop = True
End Sub
以上就是小编对于随机抽奖程序(怎么设计一个抽奖的程序)问题和相关问题的解答了,随机抽奖程序(怎么设计一个抽奖的程序)的问题希望对你有用!