C語言實(shí)現(xiàn)隨機(jī)抽獎(jiǎng)程序
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)抽獎(jiǎng)小程序的具體代碼,供大家參考,具體內(nèi)容如下
#include<stdio.h>
#include<stdlib.h>
#include <time.h> // 使用當(dāng)前時(shí)鐘做種子
#include <windows.h>
/*
做一個(gè)抽獎(jiǎng)程序,一等獎(jiǎng)1%二等獎(jiǎng)5%三等獎(jiǎng)10%
要求1:基本功能實(shí)現(xiàn),按下任意字母按鍵打印一次抽獎(jiǎng)結(jié)果。
要求2:程序開始的時(shí)候可以選擇模式,鍵盤A鍵按下,代表自動(dòng)模式;M代表手動(dòng)模式,自動(dòng)模式抽獎(jiǎng)可以一直抽,直到抽到1等獎(jiǎng)為止。
要求3:在要求2的前提下,(自動(dòng)模式)先打印第一次抽到三等獎(jiǎng)所需要的次數(shù),然后打印第一次抽到二等獎(jiǎng)所需要的次數(shù),最后打印第
一次獲得一等獎(jiǎng)所需要的次數(shù),程序結(jié)束
*/
//隨機(jī)數(shù)取段落,保證抽到的誤差較小
#define CJ_game(a) if(a>=0&&a<=327) printf("恭喜你!獲得一等獎(jiǎng)?。n");\
else if(a>=4000&&a<=5638) printf("恭喜你!獲得二等獎(jiǎng)??!\n");\
else if(a>=400&&a<=3676) printf("恭喜你!獲得三等獎(jiǎng)!!\n");\
else printf("再接再厲\n")
void CJ_mode_auto() //自動(dòng)模式
{
int First_f = 0,Second_f = 0,Third_f = 0; //定義第一次抽取到獎(jiǎng)品的標(biāo)志位
int Sjs = 0,Game_state = 1;
int F_count = 0,S_count = 0,T_count = 0,count = 0;//定義抽到獎(jiǎng)品的計(jì)數(shù)位
printf("\n");
printf("\n");
printf("==========模式A:自動(dòng)抽獎(jiǎng) 游戲開始==========\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("第一次抽到一等獎(jiǎng)所需要的次數(shù)為:%d\n",First_f);
printf("第一次抽到二等獎(jiǎng)所需要的次數(shù)為:%d\n",Second_f);
printf("第一次抽到三等獎(jiǎng)所需要的次數(shù)為:%d\n",Third_f);
printf("抽到一等獎(jiǎng)的總次數(shù)為:%d\n",F_count);
printf("抽到二等獎(jiǎng)的總次數(shù)為:%d\n",S_count);
printf("抽到三等獎(jiǎng)的總次數(shù)為:%d\n",T_count);
printf("=====請選擇新的游戲模式:M:手動(dòng),A:自動(dòng)=====\n");
}
void CJ_mode_handch(void) //手動(dòng)抽獎(jiǎng)
{
char ch;
int Sjs;
printf("\n");
printf("\n");
printf("==========模式M:手動(dòng)抽獎(jiǎng) 游戲開始==========\n");
printf("==========按0退出自動(dòng)模式==========\n");
while(1)
{
printf("=====請輸入一個(gè)字母:");
//scanf(" %c",&ch); //如果需要輸入字符然后回車的,需要在%c前面加空格或者\(yùn)n,來過濾緩沖區(qū)的“回車”
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("=====退出手動(dòng)抽獎(jiǎng)模式=====\n");
printf("=====請輸入新的游戲模式:M:手動(dòng),A:自動(dòng)\n");
break;
}
else
{
printf("=====請輸入字母?。?!=====\n");
}
}
}
int main()
{
srand((unsigned)time( NULL ) ); // 初始化隨機(jī)數(shù)
char mode;
printf("=======游戲開始==========\n");
printf("=====請選擇抽獎(jiǎng)模式======\n");
printf("=====按M進(jìn)入模式M:手動(dòng)抽獎(jiǎng)=====\n");
printf("=====按A進(jìn)入模式A:自動(dòng)抽獎(jiǎng)=====\n");
printf("=====按0結(jié)束游戲?。?====\n");
while(1)
{
mode = getch();
if(mode =='A')
{
CJ_mode_auto();
}
else if(mode =='M')
{
CJ_mode_handch();
}
else if(mode == '0')
{
printf("游戲結(jié)束!");
break;
}
else
{
printf("請輸入正確的模式?。?!\n");
}
}
return 0;
}


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++實(shí)現(xiàn)俄羅斯方塊(windows API)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)俄羅斯方塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
C++ OpenCV實(shí)現(xiàn)抖音"藍(lán)線挑戰(zhàn)"特效
這篇文章主要介紹了如何使用OpenCV C++ 實(shí)現(xiàn)抖音上的特效“藍(lán)線挑戰(zhàn)”。文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)OpenCV有一定的幫助,需要的可以參考一下2022-01-01
C++實(shí)現(xiàn)藍(lán)橋杯競賽題目---搭積木
這篇文章主要介紹了C++實(shí)現(xiàn)藍(lán)橋杯競賽題目---搭積木,本篇文章通過題目分析列舉公式進(jìn)行分析算法,包含詳細(xì)的圖文,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
c語言中位字段與結(jié)構(gòu)聯(lián)合的組合使用詳解
本篇文章是對c語言中位字段與結(jié)構(gòu)聯(lián)合的組合使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
利用C++實(shí)現(xiàn)一個(gè)線程安全的map
這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)一個(gè)線程安全的map(使用ChatCPT生成),代碼是通過兩輪對話完善的,感興趣的小伙伴可以了解一下2023-05-05
C語言實(shí)現(xiàn)惡作劇關(guān)機(jī)程序
大家好,本篇文章主要講的是C語言實(shí)現(xiàn)惡作劇關(guān)機(jī)程序,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01
一起來學(xué)習(xí)C++的動(dòng)態(tài)內(nèi)存管理
這篇文章主要為大家詳細(xì)介紹了C++的動(dòng)態(tài)內(nèi)存管理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03

