用datatxt文件保存以下内容:
13725528132 李桂荣
13725528131 李二来
13725528133 张荣刚
13725528130 荣南
13725528137 王三
13725528138 吴立
13725528139 郭德纲
13725528140 周星驰
13725528141 张曼玉
13725528142 张艺谋
13725528152 秦香莲
13725528162 潘金莲
13725528172 李大嘴
13725528182 展堂
//源代码如下
#include <stdioh>
#include <stdlibh>
#include <timeh>
#define MAX_NUM 9999
//定义保存人名和电话的数据结构
struct Person
{
char name[20];
char telno[15];
char award;
};
int num = 0; //统计人数
FILE fp; //文件指针
Person persons[MAX_NUM]; //定义数组
int awarder_1[1] = {-1}; //一等奖
int awarder_2[2] = {-1, -1}; //二等奖
int awarder_3[5] = {-1, -1, -1, -1, -1};//三等奖
//读取文件
void readdata()
{
int i = 0; //数组下标
Person person;
//文件打开
fp = fopen("datatxt", "r");
if (fp == NULL)
{
printf("打开文件datatxt失败!\n");
return;
}
//当文件不为空
while (!feof(fp))
{
num ++;
fscanf(fp, "%s", persontelno);
fscanf(fp, "%s", personname);
personaward = 'F';
persons[i++] = person;
}
}
//初始化标识
void init()
{
for(int i = 0; i < num; i++)
{
persons[i]award = 'F';
}
}
//显示单个中奖信息
void info( int i)
{
printf("手机号码: %s 姓名: %s\n", persons[i]telno, persons[i]name);
}
void main()
{
char again = 'Y';
//读取文件
readdata();
printf("简单抽奖程序\n");
srand((long)time(0));
while(again == 'Y' || again == 'y')
{
//初始化标识
init();
printf("\n开始抽第一等奖(1名),按任意键开始\n");
getchar();
awarder_1[0] = abs(rand() % num);
while (persons[awarder_1[0]]award == 'T')
{
awarder_1[0] = rand() % num;
}
persons[awarder_1[0]]award = 'T';
info(awarder_1[0]);
printf("\n开始抽第二等奖(2名)\n");
for (int i = 0; i < 2; i++)
{
printf("\n第%d个二等奖,按任意键开始\n", i+1);
getchar();
awarder_2[i] = rand() % num;
while (persons[awarder_2[i]]award == 'T')
{
awarder_2[i] = rand() % num;
}
persons[awarder_2[i]]award = 'T';
info(awarder_2[i]);
}
printf("\n\n开始抽第三等奖(5名)\n");
for (i = 0; i < 5; i++)
{
printf("\n第%d个三等奖,按任意键开始\n", i + 1);
getchar();
awarder_3[i] = rand() % num;
while (persons[awarder_3[i]]award == 'T')
{
awarder_3[i] = rand() % num;
}
persons[awarder_3[i]]award = 'T';
info(awarder_3[i]);
}
printf("\n是否重新开始抽奖(Y or N)\n");
again = getchar();
}
getchar();
return;
}
在窗体中放入label、button、timer、memo 四种类型的控件各一个:
label1--用于显示手机号码的滚动
timer1(时钟)--用于产生随机的手机号码
button1--点击即抽奖,并将获奖号码保存到memo1中
memo1--用于保存获奖手机号码
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Timer1: TTimer;
Memo1: TMemo;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
n=20;
a:array[1n] of string[11]=('13607193000','13607193001',
'13607193002','13607193003','13607193004',
'13607193005','13607193006','13607193007',
'13607193008','13607193009',
'13607193010','13607193011','13607193012',
'13607193013','13607193014',
'13607193015','13607193016','13607193017',
'13607193018','13607193019');
var
Form1: TForm1;
implementation
{$R dfm}
procedure TForm1Timer1Timer(Sender: TObject);
var
k:integer;
begin
k:=trunc(nrandom+1);
label1Caption:=a[k];
end;
procedure TForm1FormCreate(Sender: TObject);
begin
randomize;
end;
procedure TForm1Button1Click(Sender: TObject);
begin
memo1LinesAdd(label1Caption);
end;
end
先把各种可能性存在一个数组里。比如10个纸条上各有一句话,只有抽中某句话才算中奖,那么就把这十句话以字符串形式存放在数组A中。
然后就可以开始抽奖了。
用户选择抽奖,程序就使用rand函数生成一个随机数N,求N%10就能得到一个介于0到9之间的整数 i ,然后看A[i]的值是否是那个中奖的字符串,是就中奖。
当然了,你可以设计得复杂些,但原理就是这样了。
只要在窗体中做二个命令按钮、一个标签和一个定时器对象,复制以下代码,就可以运行了:
Private Sub Command1_Click()
If Command1Caption = "开始" Then
Command1Caption = "暂停"
Timer1Enabled = True
Else
Command1Caption = "开始"
Timer1Enabled = False
End If
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Load()
Label1Caption = ""
Label1FontSize = 50
Timer1Interval = 50
Timer1Enabled = False
Command1Caption = "开始"
Command2Caption = "结束"
End Sub
Private Sub Timer1_Timer()
Label1Caption = Int(Rnd 50) + 1
End Sub
以上就是关于用c语言编写一个简易的抽奖程序,全部的内容,包括:用c语言编写一个简易的抽奖程序,、用delphi7怎么做一个抽奖程序、怎么设计一个抽奖的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)