English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

程式功能:

(1)資料輸入:由程式產生一個四位數的整數亂數(0000~9999)
(2)程式使用者由鍵盤進行猜此數值的遊戲
(3)運算與決策:(可加入自創功能)
(4)進行最多十次之猜謎遊戲
(5)每次輸入均給使用者提示:
數字與位置均對之數字,以A表示。
數字對而位置不對之數字,以B表示。
例如:答案=1234,若猜的數字=3251提示:1A2B
(6)螢幕輸出:正確答案
猜對:第幾次猜對;或十次均未答對(格式自訂)

應該知道這個遊戲吧
有人能幫我寫這個程式嗎
用比較簡單的寫法 希望能附上註解
小妹送20點喔

2006-12-09 07:57:47 · 2 個解答 · 發問者 小委 1 in 電腦與網際網路 程式設計

救救我吧
有人嗎

2006-12-09 16:49:20 · update #1

2 個解答

//Power by Microsoft Visual Studio 2005
//可以使用 Dev-C++ 編譯此程式
#include
#include
#include
#include
#include
#ifndef EOF
#define EOF (-1)
#endif
#define TIMES 10//次數
int main(int argc, char *argv[]){
//=====START=====//
char *GUESS(char *BUFFER);
char *COMPARE(char *BUFFER,char *S1,char *S2);
unsigned int i;
char ANS[]="9999",input[5],report[5];
printf("*** Guess Number ***\n四位數(每位數字不可相同)\n");
GUESS(ANS);//由亂數指定答案
do{//迴圈
for(i=0;i printf("(%d time)\nInput a number: ",i+1);
scanf("%s",&input);
COMPARE(report,ANS,input);
if(strcmp(report,"4A0B")!=0){
printf("hint: %s\n",report);
//答案不合出現提示
}else{
break;
}//答案正確中斷迴圈
}
if(i==TIMES){
break;
}
}while((strcmp(report,"4A0B")!=0));
printf("Ans: %s\n",ANS);
//=====END=====//
system("PAUSE");
return 0;
}
char *GUESS(char *BUFFER){
int i,j,blnFLAG;
char digit[2],VALUE[]="ZZZZ";
srand((unsigned int)time(NULL));//取亂數種子
itoa(rand()%10,digit,10);
*(VALUE+0)=*(digit+0);
for(i=1;i<4;i++){
do{//迴圈產生出不同的數字
itoa(rand()%10,digit,10);
for(j=0,blnFLAG=0;j if(*(VALUE+j)==*(digit+0)){
blnFLAG=EOF;
break;
}
}//逐次比較字元
}while(blnFLAG==EOF);
if(blnFLAG!=EOF){
*(VALUE+i)=*(digit+0);
}//填入字元
}//填入四個字元
return strcpy(BUFFER,VALUE);
}//取亂數值
char *COMPARE(char *BUFFER,char *S1,char *S2){
int A,B,i,j;
char VALUE[5]="ZAZB",temp[2];
for(i=0,A=0,B=0;i<4;i++){
for(j=0;j<4;j++){
if(*(S1+i)==*(S2+j)){
if(i==j){
A++;//位置相同
}else{
B++;
}//位置不同字元相同
}//兩個字元相同
}
}//用迴圈逐一比較
itoa(A,temp,10);//轉成字串
*(VALUE+0)=*(temp+0);//填入字元
itoa(B,temp,10);
*(VALUE+2)=*(temp+0);
return strcpy(BUFFER,VALUE);
}

2006-12-10 08:39:49 補充:
(3)運算與決策:(可加入自創功能)

…這個你自己寫

2006-12-10 03:32:04 · answer #1 · answered by Big_John-tw 7 · 0 0

第 5 題我在
http://tw.knowledge.yahoo.com/question/question?qid=1206120404033
這裡有寫一個小方法.
您可以去參考看看.

2006-12-09 10:43:10 · answer #2 · answered by 月影 2 · 0 0

fedest.com, questions and answers