C语言写出一个随机生成1-100数字的猜数字游戏
因為要產生1-100的隨機數,所以要用到rand()函數(生成隨機數),但是只是單純使用rand()時,第二次運行玩游戲產生的隨機數和第一次運行玩游戲產生的隨機數相等,這樣一來玩幾次就知道答案了,本來就無聊的游戲更沒趣了,為了每次玩游戲產生的隨機數都不相等,所以在使用rand()時,應該在前面使用一個srand()函數,作用是設置一個產生隨機數的起始坐標,()內的數值決定了你產生的隨機數是多少,所以為了每次產生不一樣的隨機數,我們應該也要把()內的數設置成一個隨機數或者是個不斷改變的數,所以我們可以將我們電腦上的時間放到srand的()內,也就是將時間戳(就是當前計算機的時間減去計算機的起始時間1970年1月1日0分0秒=(xxx秒))放到()內,這樣就可以產生不同的隨機數起始坐標,就可以產生不相等的隨機數。
其中?time(括號里面需要個指針但是我們不需要 所以放個空指針就行? NULL
設置起點一次就行沒必要每次都從新設置 所以放在主函數中就行 沒必要放在game()里
rand() 以及srand()的頭文件為stdlib.h? ?調用計算機時間的函數time的頭文件為time.h
代碼如下
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void kaishicaidan()
{
?? ?printf("*************************\n");
?? ?printf("***** 1.開始 0.結束 *****\n");
?? ?printf("*************************\n");
}
void game()
{
?? ?int c = 0;
?? ?int b = 0;
?? ?b = rand()%100+1; ? ? ? ? ? ? //產生一個1-100的隨機數
?? ?while (1) ? ? ? ? ? ? ? ? ? ?//直到猜對才退出程序
?? ?{
?? ??? ?printf("請輸入一個數字:");
?? ??? ?scanf("%d", &c);
?? ??? ?if (c > b)
?? ??? ?{
?? ??? ??? ?printf("大了\n");
?? ??? ?}
?? ??? ?else if (c < b)
?? ??? ?{
?? ??? ??? ?printf("小了\n");
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?printf("對了\n");
?? ??? ??? ?break;
?? ??? ?}
?? ?}?? ?
}
int main()
{
?? ?int a = 0;
?? ?srand((unsigned int)time(NULL)); ? /*放在rand()之前,是每次游戲產生的隨機數都不相同,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? srand()內要求是?無符號整形所以要強制轉換一下,time()內? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?要求指針,但是這個不太需要,所以加上個空指針NULL就行*/
?? ?do
?? ?{
?? ??? ?kaishicaidan();? ? ? ? ? ? ? ? ?//自制函數開始菜單
?? ??? ?printf("請選擇:");
?? ??? ?scanf("%d", &a);
?? ??? ?switch (a)
?? ??? ?{
?? ??? ?case 1:
?? ??? ??? ?game();? ? ? ? ? ? ? ? ? ? ? //自制函數游戲
?? ??? ??? ?break;
?? ??? ?case 0:
?? ??? ??? ?printf("退出游戲");
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?printf("輸入錯誤");
?? ??? ??? ?break;
?? ??? ?}
?? ?} while(a); //如果是零就結束循環 ,如果非零就繼續循環
? ? ?return 0;
}
總結
以上是生活随笔為你收集整理的C语言写出一个随机生成1-100数字的猜数字游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022 春节抖音视频红包系统设计与实现
- 下一篇: 什么软件测试电脑配置够玩什么游戏,怎么看