關於集合思想,人機猜數

2021-07-14 02:42:34 字數 1293 閱讀 3092

這次程式設計的題目是: 由計算機「想」乙個四位數,請人猜這個四位數是多少。人輸入這個四位數後,計算機首先判斷這四個數中有幾個猜對了,稱之為b,並且在猜對的數字中又有幾位位置也是對的,稱之為a,將結果顯示出來,給人以提示,請人再猜,直到人猜出計算機所想的四位數為止。請程式設計實現該遊戲,遊戲結束時,顯示人猜乙個數用了幾次。

第乙個問題是:如何讓計算機想乙個四位數,因為沒有明確要求所以可以是重複的四位數,並且要是隨機的,不能每次都是一樣的數字,此時想到的是srand和rand(),呼叫了所謂的「種子」,標頭檔案是,如何使用如下:

srand((unsigned)time(null));

for(i=0;i<4;i++)

為什麼是用for迴圈儲存進陣列呢,這就是第二個問題:如何讓玩家猜的數與系統想的數做比較?我太菜了所以想不出好辦法,所以選擇了用陣列的形式,把計算機的數存進陣列,也讓玩家輸入的數存進陣列,陣列與陣列間比較,還是比較簡單的,運用兩個for迴圈,

for(i=0;i<4;i++)                                  //  這裡面的陣列cai裡的4位數是玩家所猜的,陣列str裡的4位數是計算機所給的;

for(j=0;j<4;j++) }

}b=b-a;                 // 這裡因為b和a的計算方式相同,在沒變陣列的情況下,所以要先減掉a的值;

在那之後,是要恢復計算機陣列str的,此處呼叫memcpy庫函式, 即memcpy(s1,s2,sizeof(int)*4)這個格式的意思是將s2陣列的前四位整型數字複製給s1數字,我們在這裡面隨便給第三個陣列s3,先存進str陣列的4位數,等迴圈結束就將s3的給還str;

問題三,如何實現多次迴圈猜數,而不是只猜一次就結束遊戲?設定好a!=4的情況不停止迴圈就ok,如下:

while(a!=4) {

…… }

至於一些選單介面和保護程式,就看圖就ok(這個自己設計不麻煩),下面給出全部**:

對了,這其中的system(」cls「);是清屏作用,純粹好看,system(」color 0a「);是改變背景顏色和字型顏色,0-9是變背景顏色,a-f是變字型顏色,純粹是為了醒目;

本次使用的是c語言,是在vc6環境下執行的,所以沒有呼叫random庫函式(vc不認識!)

人機猜數遊戲

1 人機猜數遊戲 由計算機 想 乙個四位數,請人猜這個四位數是多少。人輸入這個四位數後,計算機首先判斷這四個數中有幾個猜對了,並且在猜對的數字中又有幾位位置也是對的,將結果顯示出來,給人以提示,請人再猜 直到人猜出計算機所想的四位數為止。請程式設計實現該遊戲,遊戲結束時,顯示人猜乙個數用了幾次。沒想...

人機猜數遊戲2

將以上遊戲 91.人機猜數遊戲 雙方倒一下,請人想乙個四位的整數,計算機來猜,人給計算機提示資訊,最終看計算機用幾次猜出乙個人 想 的數。請程式設計實現。問題分析與演算法設計 解決這類問題時,計算機的思考過程不可能象人一樣具完備的推理能力,關鍵在於要將推理和判斷的過程變成一種機械的過程,找出相應的規...

C語言人機猜數問題

由計算機隨機產生乙個四位整數,請人猜這四位整數是多少。人輸入乙個四位數後,計算機首先判斷其中有幾位猜對了,並且對的數字中有幾位位置也正確,將結果顯示出來,給人以提示,請人再猜,直到人猜出計算機隨機產生的四位數是多少為止。需求 1.乙個判斷有幾個數字正確的函式 2.乙個判斷有幾個位置正確的函式 3.乙...