【編程趣味游戲】:基于分支循環語句的猜數字、關機程序

🌟菜鳥主頁:@晨非辰的主頁

👀學習專欄:《C語言學習》

💪學習階段:C語言方向初學者

?名言欣賞:"編程的核心是實踐,而非空談"


目錄

?1. 游戲1--猜數字

1.1 rand函數

1.2 srand函數

1.3 time函數

1.4 設置隨機數范圍

?1.5 整合實現猜數字游戲

2. 游戲2--關機程序


?前言:學習掌握了前面的分支循環語句的知識,接下來進行綜合運用寫一個有趣的代碼。


?1. 游戲1--猜數字

--游戲要求:

? ? ? ? --電腦自動生成1~100的隨機數;????????

? ? ? ? --玩家猜數字的過程中,程序根據猜測數據的大小給出大了或小了的反饋,直到猜對,游戲結束;

-在進行編寫游時,根據要求先來補充一點知識——如何產生隨機數?

1.1 rand函數

--C語?提供了?個函數叫 rand,這函數用來做生成隨機數,原型如下:

int rand(void);

--當然,并不是完全的隨機數,稱之為"偽隨機數"數值范圍在0~RAND_MAX之間,這個RAND_MAX的大小是依賴編譯器上實現的,但是在大部分編譯器上是32767。

--rand函數包含頭文件-<stdlib.h>。

--在測試函數時,多運行幾次法發現生成的隨機數都是一樣的(偽),是因為rand函數是對一個叫“種子”(默認1)的基準值進行運算生成的隨機數,則像生成真正的隨機數就要改變"種子值"。

--如何解決,請繼續往下看!

1.2 srand函數

--C語言還提供了函數叫srand,用來初始化隨機數的生成器的,scrand的原型如下:

void srand(unsigned int seed);

--在調用rand函數前,先調用srand函數,通過參數seed設置rand生成隨機數的"種子值",改變了種子,"偽隨機數"也就真正隨機了。

--那也就意味著,要生成隨機的seed就有需要隨機數,這就很矛盾;為了解決矛盾,引入了time函數。

1.3 time函數

--在程序中一般使用程序運行時間作為種子,因為時間時刻變化。

--在c語言中函數叫time,就可以獲得這個時間,time函數原型如下:

1.time_t time(time_t* timer);

?--對于時間函數,會返回當前的日歷時間,返回類型time_t。

--如果 timer 是NULL,就只返回這個時間的差值。time函數返回的這個時間差也被叫做:時間戳。

--在使用函數時,包含頭文件<time.h>;返回時間戳這樣寫:

1.time(NULL);//調用time函數返回時間戳,這里沒有接收返回值

?--生成隨機數代碼(srand函數不要頻繁調用,一次運行的程序中調用一次;):

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{//使用time函數返回時設置種子//srand類型為unsigned,將time返回時強轉srand((unsigned int) time(NULL));printf("%d\n", rand());printf("%d\n", rand());printf("%d\n", rand());return 0;
}

?--這樣運行后生成的數值就是隨機的了。

1.4 設置隨機數范圍

--生成a~b間的隨機數;

a + rand() % (b-a+1);

?1.5 整合實現猜數字游戲

--最終整合-這里涉及到函數定義和調用,不懂的請移步作者另一篇博客.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>//輸出菜單
void menu()
{printf("*****************\n");printf("***  1->play  ***\n");printf("***  0->exit  ***\n");printf("*****************\n");
}//設計游戲主題函數void game()
{//生成隨機數int r = rand() % 100 + 1;//輸入的數值int num = 0;//設置游戲次數int count = 5;printf("猜數字游戲正式開始\n");while (count)//count == 0后結束{printf("\n你還有%d次機會\n", count);printf("請輸入數字:");scanf("%d", &num);if (num < r){printf("猜小了\n");}else if (num > r){printf("猜大了\n");}else{printf("恭喜你,猜對了\n");break;}count--;//次數減一}if (count == 0){printf("你的機會用完了,正確答案是:%d\n", r);}
return 0;
}//整合
int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("請選擇:>");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("你已退出游戲\n");break;default:printf("選擇錯誤,重新選擇\n");break;}} while (input);return 0;
}

2. 游戲2--關機程序

int main()
{char input[20] = { 0 };system("shutdown -s -t 60");//關機指令;-s設置,-t設計時間while (1){printf("你的電腦將在一分鐘后關機,輸入:我是豬,可以取消關機\n");scanf("%s", input);//數組名不用取地址,數組名本身就是地址;if (strcmp(input, "我是豬") == 0){system("shutdown -a");//取消關機指令printf("關機程序已關閉\n");break;}}return 0;
}


?--strcmp?函數是用來比較兩個字符串是否相等的。strcmp?函數的原型如下:

int strcmp(const char *s1, const char *s2);

--如果兩個字符串相等,就返回?0;要是?s1?按字典序小于?s2,返回一個小于?0?的值;若?s1?按字典序大于?s2,則返回一個大于?0?的值。


結語:本篇文章旨在分享利用所學知識設計簡單的趣味游戲,喜歡的朋友,給個三連白~,歡迎評論關注,一起來學習吧!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916032.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916032.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916032.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UE5 UI 控件切換器

文章目錄分類作用屬性分類 面板 作用 可以根據索引切換要顯示哪個子UI&#xff0c;可以擁有多個子物體&#xff0c;但是任何時間只能顯示一個 屬性 在這里指定要顯示的UI的索引

scikit-learn 包

文章目錄scikit-learn 包核心功能模塊案例其他用法**常用功能詳解****(1) 分類任務示例&#xff08;SVM&#xff09;****(2) 回歸任務示例&#xff08;線性回歸&#xff09;****(3) 聚類任務示例&#xff08;K-Means&#xff09;****(4) 特征工程&#xff08;PCA降維&#xff0…

Excel 將數據導入到SQLServer數據庫

一般系統上線前期都會導入期初數據&#xff0c;業務人員一般要求你提供一個Excel模板&#xff0c;業務人員根據要求整理數據。SQLServer管理工具是支持批量導入數據的&#xff0c;所以我們可以使用該工具導入期初。Excel格式 第一行為字段1、連接登入的數據庫并且選中你需要導入…

剪枝和N皇后在后端項目中的應用

剪枝算法&#xff08;Pruning Algorithm&#xff09; 生活比喻&#xff1a;就像修剪樹枝一樣&#xff0c;把那些明顯不會結果的枝條提前剪掉&#xff0c;節省養分。 在后端項目中的應用場景&#xff1a; 搜索優化&#xff1a;在商品搜索中&#xff0c;如果某個分類下沒有符合條…

cocos 2d游戲中多邊形碰撞器會觸發多次,怎么解決

子彈打到敵機 一發子彈擊中&#xff0c;碰撞回調多次執行 我碰撞組件原本是多邊形碰撞組件 PolygonCollider2D&#xff0c;我改成盒碰撞組件BoxCollider2D 就好了 用前端的節流方式。或者loading處理邏輯。我測試過了&#xff0c;是可以 本來就是多次啊,設計上貌似就是這樣的…

Kubernetes環境中GPU分配異常問題深度分析與解決方案

Kubernetes環境中GPU分配異常問題深度分析與解決方案 一、問題背景與核心矛盾 在基于Kubernetes的DeepStream應用部署中&#xff0c;GPU資源的獨占性分配是保障應用性能的關鍵。本文將圍繞一個典型的GPU分配異常問題展開分析&#xff1a;多個請求GPU的容器本應獨占各自的GPU&…

Django與模板

我叫補三補四&#xff0c;很高興見到大家&#xff0c;歡迎一起學習交流和進步今天來講一講視圖Django與模板文件工作流程模板引擎&#xff1a;主要參與模板渲染的系統。內容源&#xff1a;輸入的數據流。比較常見的有數據庫、XML文件和用戶請求這樣的網絡數據。模板&#xff1a…

日本上市IT企業|8月25日將在大連舉辦赴日it招聘會

株式會社GSD的核心戰略伙伴貝斯株式會社&#xff0c;將于2025年8月25日在大連香格里拉大酒店商務會議室隆重舉辦赴日技術人才專場招聘會。本次招聘會面向全國范圍內的優秀IT人才&#xff0c;旨在為貝斯株式會社東京本社長期發展招募優質的系統開發與管理人才。招聘計劃&#xf…

低功耗設計雙目協同畫面實現光學變焦內帶AI模型

低功耗設計延長續航&#xff0c;集成儲能模塊保障陰雨天氣下的鐵塔路線的安全一、智能感知與識別技術 多光譜融合監控結合可見光、紅外熱成像、激光補光等技術&#xff0c;實現全天候監測。例如&#xff0c;紅外熱成像可穿透雨霧監測山火隱患&#xff0c;激光補光技術則解決夜間…

datasophon下dolphinscheduler執行腳本出錯

執行hive腳本出錯&#xff1a; 錯誤消息&#xff1a; FAILED: RuntimeException Error loading hooks(hive.exec.post.hooks): java.lang.ClassNotFoundException: org.apache.atlas.hive.hook.HiveHookat java.net.URLClassLoader.findClass(URLClassLoader.java:387)at java.…

【Elasticsearch】安全地刪除快照倉庫、快照

《Elasticsearch 集群》系列&#xff0c;共包含以下文章&#xff1a; 1?? 冷熱集群架構2?? 合適的鍋炒合適的菜&#xff1a;性能與成本平衡原理公式解析3?? ILM&#xff08;Index Lifecycle Management&#xff09;策略詳解4?? Elasticsearch 跨機房部署5?? 快照與恢…

nodejs的npm

1. 什么是 npm&#xff1f; npm&#xff08;Node Package Manager&#xff09; 是 Node.js 的默認包管理工具&#xff0c;用于&#xff1a; 安裝和管理依賴&#xff08;第三方庫、框架等&#xff09;。運行項目腳本&#xff08;如啟動服務、測試、構建等&#xff09;。發布和共…

外網訪問內部私有局域網方案,解決運營商只分配內網IP不給公網IP問題

相信不少網友和我一樣&#xff0c;為了實現遠程控制、NAS訪問、組建私有云、攝像頭監控之類的需求&#xff0c;把光貓改成了橋接模式&#xff0c;并用自己的路由器撥號、進行端口了映射。本人之前一直用著沒啥問題&#xff0c;不過&#xff0c;最近突然出現了無法訪問的情況&am…

大模型——上下文工程 (Context Engineering) – 現代 AI 系統的架構基礎

上下文工程 (Context Engineering) – 現代 AI 系統的架構基礎 最近,AI大神 Andrej Karpathy 在YC的一個演講《Software in the era of AI 》帶火了一個新的概念 Context Engineering,上下文工程,LangChain也于7月2號在官網博客發表以《Context Engineering》為題目的文章(h…

PostgreSQL RelationBuildTupleDesc 分解

/** RelationBuildTupleDesc** Form the relations tuple descriptor from information in* the pg_attribute, pg_attrdef & pg_constraint system catalogs.*///從pg_attribute,pg_attrdef和pg_constraint 獲取字段信息以填充relation->rd_att static void //用到的…

在 Alpine Linux 中創建虛擬機時 Cgroup 掛在失敗的現象

現象&#xff1a;在 Alpine Linux 中部署 LXD或者incus 服務后&#xff0c;創建 容器或者虛擬機時提示 實例啟動失敗、退出代碼為1&#xff1a;查詢啟動日志后&#xff0c;發現是 cgroup 掛載失敗導致了 container 拉起失敗。原因分析&#xff1a;從啟動日志上看&#xff0c;是…

讓UV管理一切!!!

一、遇到的問題 自己在做AI開發的時候&#xff0c;先用的conda來管理虛擬環境&#xff0c;然后使用pip freeze > reqiurments來打包相關依賴。 優點&#xff0c;conda環境可以讓不同的項目有單獨的虛擬環境&#xff0c;不會干擾每個項目&#xff0c;還可以多個項目共享一個…

Jmeter使用 - 2

5 參數化 5.1 自定義變量 線程組 --> 配置元件 --> 用戶定義的變量 可以自定義變量&#xff0c;通過 ${變量名} 使用 5.2 隨機函數 隨機數函數 # 生產六位數的隨機數字 ${__Random(100000,999999,)} # 生成隨機時間: 時間格式yyyy-MM-dd,開始時間,結束時間,設置時區…

部署 Zabbix 企業級分布式監控

目錄 一、監控系統的功能概述 1、監控的定義 2、監控的五個層次 &#xff08;1&#xff09;基礎設施監控 &#xff08;2&#xff09;系統層監控 &#xff08;3&#xff09;應用層監控 &#xff08;4&#xff09;業務監控 &#xff08;5&#xff09;端用戶體驗監控 二、…

Silly Tavern 教程②:首次啟動與基礎設置

本文介紹 Silly Tavern 首次啟動后的基礎設置&#xff0c;包括語言切換與 AI 后端連接&#xff0c;重點推薦 無需付費即可使用的免費或低成本方案&#xff0c;涵蓋 Groq、AI Horde、Gemini 和 OpenRouter。 一、啟動 Silly Tavern 并訪問界面 完成安裝后&#xff0c;執行以下命…