用c语言编写一个简易的抽奖程序,

用c语言编写一个简易的抽奖程序,,第1张

用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怎么做一个抽奖程序、怎么设计一个抽奖的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9646805.html

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

发表评论

登录后才能评论

评论列表(0条)

保存