C语言实现随机抽奖程序

本文实例为大家分享了C语言实现抽奖小程序的具体代码,供大家参考,具体内容如下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

#include<stdio.h>

#include<stdlib.h>

#include <time.h> // 使用当前时钟做种子

#include <windows.h>

/*

做一个抽奖程序,一等奖1%二等奖5%三等奖10%

要求1:基本功能实现,按下任意字母按键打印一次抽奖结果。

要求2:程序开始的时候可以选择模式,键盘A键按下,代表自动模式;M代表手动模式,自动模式抽奖可以一直抽,直到抽到1等奖为止。

要求3:在要求2的前提下,(自动模式)先打印第一次抽到三等奖所需要的次数,然后打印第一次抽到二等奖所需要的次数,最后打印第

一次获得一等奖所需要的次数,程序结束

*/

//随机数取段落,保证抽到的误差较小

#define CJ_game(a) if(a>=0&&a<=327) printf("恭喜你!获得一等奖!!\n");\

else if(a>=4000&&a<=5638) printf("恭喜你!获得二等奖!!\n");\

else if(a>=400&&a<=3676) printf("恭喜你!获得三等奖!!\n");\

else printf("再接再厉\n")

void CJ_mode_auto() //自动模式

{

int First_f = 0,Second_f = 0,Third_f = 0; //定义第一次抽取到奖品的标志位

int Sjs = 0,Game_state = 1;

int F_count = 0,S_count = 0,T_count = 0,count = 0;//定义抽到奖品的计数位

printf("\n");

printf("\n");

printf("==========模式A:自动抽奖 游戏开始==========\n");

while(Game_state)

{

Sleep(200);

Sjs=rand();

CJ_game(Sjs);

count++;

// printf("%d\n",count); //测试位

if(Sjs >= 400 && Sjs <= 3676)

{

T_count++;

if(T_count == 1)

{

Third_f = count;

}

}

if(Sjs >= 4000 && Sjs <= 5638)

{

S_count++;

if(S_count == 1)

{

Second_f = count;

}

}

if(Sjs >= 0 && Sjs <= 327)

{

F_count++;

if(F_count == 1)

{

First_f = count;

}

}

if(First_f && Second_f && Third_f)

{

Game_state = 0;

}

}

printf("第一次抽到一等奖所需要的次数为:%d\n",First_f);

printf("第一次抽到二等奖所需要的次数为:%d\n",Second_f);

printf("第一次抽到三等奖所需要的次数为:%d\n",Third_f);

printf("抽到一等奖的总次数为:%d\n",F_count);

printf("抽到二等奖的总次数为:%d\n",S_count);

printf("抽到三等奖的总次数为:%d\n",T_count);

printf("=====请选择新的游戏模式:M:手动,A:自动=====\n");

}

void CJ_mode_handch(void) //手动抽奖

{

char ch;

int Sjs;

printf("\n");

printf("\n");

printf("==========模式M:手动抽奖 游戏开始==========\n");

printf("==========按0退出自动模式==========\n");

while(1)

{

printf("=====请输入一个字母:");

//scanf(" %c",&ch); //如果需要输入字符然后回车的,需要在%c前面加空格或者\n,来过滤缓冲区的“回车”

ch = getch(); //从键盘获取字符

if( (ch>='a'&&ch<='z') || (ch>='A'&&ch<='Z') )

{

Sjs = rand();

// printf("%d\n",Sjs);

CJ_game(Sjs);

}

else if(ch == '0')

{

printf("=====退出手动抽奖模式=====\n");

printf("=====请输入新的游戏模式:M:手动,A:自动\n");

break;

}

else

{

printf("=====请输入字母!!!=====\n");

}

}

}

int main()

{

srand((unsigned)time( NULL ) ); // 初始化随机数

char mode;

printf("=======游戏开始==========\n");

printf("=====请选择抽奖模式======\n");

printf("=====按M进入模式M:手动抽奖=====\n");

printf("=====按A进入模式A:自动抽奖=====\n");

printf("=====按0结束游戏!!=====\n");

while(1)

{

mode = getch();

if(mode =='A')

{

CJ_mode_auto();

}

else if(mode =='M')

{

CJ_mode_handch();

}

else if(mode == '0')

{

printf("游戏结束!");

break;

}

else

{

printf("请输入正确的模式!!!\n");

}

}

return 0;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/mxctf_p1ay3r/article/details/120240763

本文链接:https://my.lmcjl.com/post/8257.html

展开阅读全文

4 评论

留下您的评论.