亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言超詳細講解猜數(shù)字游戲的實現(xiàn)

 更新時間:2022年07月14日 10:03:23   作者:白朝槿kk  
現(xiàn)在很多游戲都有抽獎抽卡的功能,其實這個就類似于猜數(shù)字,生成一個隨機數(shù),然后你去猜,猜對了就得獎。猜到一定次數(shù)就會保底。要實現(xiàn)猜數(shù)字的小游戲,首先是要讓程序生成隨機數(shù),這就要用到rand、srand和time這三個函數(shù),其次要了解時間戳

rand函數(shù)

先看一下下面這張圖:

通過這張圖我們可以了解到rand函數(shù)的返回值是int類型,形參為空,它的頭文件<stdlib.h>以及它的返回值范圍是0到RAND_MAX. 而RAND_MAX在VS中是0x7fff,轉(zhuǎn)換成二進制就是32767.所以rand返回的隨機數(shù)的范圍就是0到32727。

其實我們用rand函數(shù)就可以生成隨機數(shù)了,那為什么我們還要用到srand函數(shù)呢?

因為只有第一次生成的隨機數(shù)是隨機的,如果程序執(zhí)行多次,那第二次之后生成的隨機數(shù)就會和第一次生成的一樣。這是一種偽隨機。

因此只用到rand函數(shù)是不夠的,我們要用rand函數(shù)之前,先用strand函數(shù)。

srand函數(shù)

看一下strand函數(shù),返回值為void,形參是int類型的數(shù)據(jù),要用strand函數(shù),首先要給strand傳一個int類型的數(shù)據(jù),根據(jù)傳進去的值不同,生成的隨機數(shù)也不同。但是這樣就矛盾了。生成一個隨機數(shù)之前首先要傳進去一個隨機數(shù),為了解決這個問題,就要使用時間戳。

時間戳

我們無法給它一個隨機數(shù),但是我們可以用時間作為參數(shù)傳進去,時間是變的,這樣生成的隨機數(shù)也就是變的。怎么獲得時間戳呢?C語言也為我們提供了一個time函數(shù)可以幫助我們獲得時間戳。

time的頭文件是<time.h>,time的函數(shù)原型有點復(fù)雜,看不懂沒關(guān)系,會用就行。我們只是要把time的值作為參數(shù)傳給strand函數(shù)。strand的形參是unsigned int類型的,而time的返回值是time_t類型的,我們可以強制類型轉(zhuǎn)換。time的形參是指針類型的參數(shù),我們用NULL就可以了。

srand((unsigned int)time(NULL));

解決完這個問題,我們還要解決rand生成隨機數(shù)的范圍的問題,我們?nèi)绻@得一個1~N之間的數(shù)的話,就要對生成的隨機數(shù)對N進行取余+1.為了方便猜數(shù)字,生成的隨機數(shù)范圍就控制在1到100.猜數(shù)字不是一次就能才對的,猜不對就要一直猜,猜對了才退出。下面是完整代碼。

完整代碼與程序運行圖

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
	printf("|-------------------|\n");
	printf("|-----1.玩游戲------|\n");
	printf("|-----0.退出--------|\n");
	printf("|-------------------|\n");
}
void game()
{
	int ret = rand()%100+1;
	int m = 0;
	while (1)
	{
		scanf("%d", &m);
		if (m > ret)
		{
			printf("猜大了!\n");
		}
		else if (m < ret)
		{
			printf("猜小了!\n");
		}
		else
		{
			printf("恭喜你,猜對了!\n");
			break;
		}
	}
}
int main()
{
	srand((unsigned int)time(NULL));
	int n = 0;
	do
	{
		menu();
		printf("請選擇:");
		scanf("%d", &n);
		switch (n)
		{
		case 1:
			printf("開始猜數(shù)字\n");
			game();
			break;
		case 0:
			printf("已退出\n");
			break;
		default:
			printf("選擇錯誤,請重新選擇\n");
			break;
		}
	} while(n);
	return 0;
}

程序運行圖如下:

到此這篇關(guān)于C語言超詳細講解猜數(shù)字游戲的實現(xiàn)的文章就介紹到這了,更多相關(guān)C語言猜數(shù)字游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言循環(huán)控制入門介紹

    C語言循環(huán)控制入門介紹

    大家好,本篇文章主要講的是C語言循環(huán)控制入門介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C語言 OpenCV實現(xiàn)柱面投影

    C語言 OpenCV實現(xiàn)柱面投影

    在做全景拼接的時候,為了保持圖片中的空間約束與視覺的一致性,需要進行柱面投影,否則離中心圖像距離越遠的圖像拼接后變形越大。本文將具體介紹一下這如何實現(xiàn),需要的可以參考一下
    2021-12-12
  • 自己實現(xiàn)strcpy函數(shù)的實現(xiàn)方法

    自己實現(xiàn)strcpy函數(shù)的實現(xiàn)方法

    本篇文章介紹了,自己實現(xiàn)strcpy函數(shù)的實現(xiàn)方法。需要的朋友參考下
    2013-05-05
  • OLEDB打開Excel文件的實現(xiàn)方法

    OLEDB打開Excel文件的實現(xiàn)方法

    下面小編就為大家?guī)硪黄狾LEDB打開Excel文件的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 使用C語言構(gòu)建基本的二叉樹數(shù)據(jù)結(jié)構(gòu)

    使用C語言構(gòu)建基本的二叉樹數(shù)據(jù)結(jié)構(gòu)

    這篇文章主要介紹了使用C語言使用C語言構(gòu)建基本的二叉樹數(shù)據(jù)結(jié)構(gòu),包括根據(jù)前序序列和中序序列構(gòu)建二叉樹的方法,需要的朋友可以參考下
    2015-08-08
  • C語言數(shù)據(jù)結(jié)構(gòu)之堆排序源代碼

    C語言數(shù)據(jù)結(jié)構(gòu)之堆排序源代碼

    這篇文章主要為大家詳細介紹了C語言數(shù)據(jù)結(jié)構(gòu)之堆排序源代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++實現(xiàn)單詞管理系統(tǒng)

    C++實現(xiàn)單詞管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)單詞管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言員工信息管理系統(tǒng)源代碼

    C語言員工信息管理系統(tǒng)源代碼

    這篇文章主要為大家詳細介紹了C語言員工信息管理系統(tǒng)源代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 通俗易懂的C語言快速排序和歸并排序的時間復(fù)雜度分析

    通俗易懂的C語言快速排序和歸并排序的時間復(fù)雜度分析

    這篇文章主要為大家通俗易懂的講解了C語言快速排序和歸并排序的時間復(fù)雜度分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 推箱子游戲C語言實現(xiàn)代碼

    推箱子游戲C語言實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了推箱子游戲C語言實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12

最新評論