討論區快速選單
知識庫快速選單
討論區最近新進100則主題 掌握Salesforce雲端管理秘訣 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
猜數字的程式寫法
更改我的閱讀文章字型大小
作者 : sarge(Neo) 人氣指數超過10000點
[ 貼文 56 | 人氣 19730 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/3 上午 09:47:18
請問如何用C++寫出如下效果的程式(編譯程式是Dev C++)

請寫一個由電腦隨機產生不同數字的四位數(1A2B遊戲),玩家可重覆猜電腦所產生的數字,一旦猜對,系統可自動計算玩家猜測的次數。

-------------------------
舉例:電腦產生4153
玩家猜:4531 ->> 1A3B
玩家猜:4135 ->> 2A2B
玩家猜:4153 ->> 猜對了,一共猜了3次
作者 : linuxice(Linuxice)
[ 貼文 11 | 人氣 2 | 評價 80 | 評價/貼文 7.27 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/3 下午 08:46:02
在下是用陣列的方法去做,number[4]
然後再一個一個去比較
作者 : royx0612(Royx)
[ 貼文 6 | 人氣 228 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/4 上午 12:53:55
int A,B;
char answer[4] ,number[4] //答案 及 玩家 變數
answer[4]={'0','1','2','3'}; //答案0123

for(int i=0;i<4;i++) //玩家數入4個數 PS.我在此會多加一個檢查函式
cin.get(number[i]); //check_num(char []) 用來檢查是否為數字,有沒有重複
    
for(int i=0;i<4;i++) //比對答案
if(answer[i]==number[i])
   A++;
for(int i=0;i<4;i++)
 for(int j=0;j<4;j++)
  if(answer[i]==number[j] && i!=j)
   B++;

其他零碎的就不寫了 我想以上精華區~~要判斷輸入幾次的話 多加個變數和迴圈就行了
作者 : redworld(B*B Mou)
[ 貼文 3 | 人氣 1 | 評價 30 | 評價/貼文 10 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人sarge註記此篇回應為最佳解答 2005/4/5 下午 12:10:12
我也是程式的初學者
看到這篇文章覺得很有趣就PO看看
應該沒有錯拉...
可是我寫的很冗長島是真的><
希望大家不吝指教
# include<stdio.h>
# include<stdlib.h>
# include<time.h>

void guess(int [],int [],int &,int &);
int main()
{
int conans[4],ppans[4];
int i,peans,a=0;
int tim=0;
srand(time(NULL));
for(i=0;i<4;i++){
conans[i]=rand()%10;
}


do{
printf("Pleae input your ans:");
scanf("%d",&peans);
for(i=0;i<4;i++){
ppans[i]=peans%10;
peans/=10;
}
guess(conans,ppans,a,tim);
}while(a!=4);

return 0;
}
void guess(int conans[],int ppans[],int &a,int &tim)
{
int i,j;
int b=0;
for(i=0;i<4;i++){
for(j=3;j>=0;j--){
if(conans[i]==ppans[j])
b++;
}
}
for(i=0;i<4;i++){
for(j=3;j>=0;j--){
if(conans[i]==ppans[j]){
a++;
break;
}
}
}
b-=a;
if(b<0)
b==0;
tim++;
printf("%dA%dB\n",a,b);
printf("You guess %d time!\n",tim);

if(a==4){
printf("You got it!!!");
printf("The ans is:");
for(i=0;i<4;i++){
printf("%d",conans[i]);
}
}
}














作者 : kwong(kwong) 貼文超過200則
[ 貼文 257 | 人氣 739 | 評價 260 | 評價/貼文 1.01 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/6 下午 09:10:32
http://yifu.oners.idv.tw/viewthread.php?tid=160&page=2&fpage=2
作者 : lhh(Howard)
[ 貼文 54 | 人氣 268 | 評價 160 | 評價/貼文 2.96 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/6 下午 11:54:18
<pre>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>

#define ESC 0x1B

void main()
{
char Key_num[5],Set_num[5];
int count=0;
int A,B;
//亂數設4位數字
srand(time(NULL)%37);
for (int i=0;i<4;i++)
{
Set_num[i] = rand()%10+48;
//4位數字不可重覆
for (int j=0;j<i;j++)
if (Set_num[i] == Set_num[j])
i--;
}
do {
A = B = 0;
int check = 0;
//輸入4位數字
for (int x=0;x<4;x++)
{
Key_num[x] = getch();
if (Key_num[x] == ESC)//按下Esc鍵強制結束
return;
for (int y=0;y<x;y++)//判斷輸入數字不重覆
if (Key_num[x] == Key_num[y])
check = 1;
if (isdigit(Key_num[x]) && check == 0)//判斷輸入數字才印出
putch(Key_num[x]);
else//非數字及重覆數字之處理程序
{
x--;
check = 0;
}
}
//判斷猜中幾位(填入AB) 主要的判斷式在這裡
for (int y=0;y<4;y++)
for (int z=0;z<4;z++)
if (Key_num[y] == Set_num[z])
y==z?A++:B++;
//顯示猜測結果
count++;
printf("\t%dA%dB\n",A,B);
} while (A != 4);
printf("總共猜了 %d 次\n",count);
}
如果不處理輸入重覆數字及非數字字元..程式會簡短許多......
</pre>
作者 : weiren7(阿維)
[ 貼文 1 | 人氣 3 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/11 下午 04:11:32
請問用來檢查是否為數字,有沒有重複這行我執行有問題
可不可以詳細的教一下還有如果要下這指令,要下標 頭 嗎
謝謝
作者 : lhh(Howard)
[ 貼文 54 | 人氣 268 | 評價 160 | 評價/貼文 2.96 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/21 上午 02:07:15

>請問用來檢查是否為數字,有沒有重複這行我執行有問題
>可不可以詳細的教一下還有如果要下這指令,要下標 頭 嗎
>謝謝
sorry最近比較忙,所以沒什麼時間可以上來看文章
到今天才回..很抱歉^^"
您說執行有問題,可否詳述是出現什麼錯誤訊息!

isdigit();<==這個函數需要 type.h 這個標頭檔
作者 : h0819(喔買嘎)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/6 下午 12:18:45
請問各位大大!!
C++可以寫出跟電腦對猜的猜數字遊戲嗎?
可以的話是否有哪為大大願意提供給我(順便加以說明一下...我想了解一下!!)
我的MAIL:h0933966319@yahoo.com.tw
先感謝了!!
作者 : h0819(喔買嘎)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/6 下午 12:19:15
請問各位大大!!
C++可以寫出跟電腦對猜的猜數字遊戲嗎?
可以的話是否有哪為大大願意提供給我(順便加以說明一下...我想了解一下!!)
我的MAIL:h0933966319@yahoo.com.tw
先感謝了!!
作者 : oxoxox(oxoxox)
[ 貼文 58 | 人氣 903 | 評價 390 | 評價/貼文 6.72 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/11 上午 06:51:06
可參考
http://www.math.ncu.edu.tw/~ziyou/c++/practice/index.htm
作者 : samtseng(sam)
[ 貼文 7 | 人氣 426 | 評價 0 | 評價/貼文 0 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/15 上午 09:45:04
小弟是超級初學者請不吝指教.

#include <iostream>
#include <stdlib.h>
#include <stdio.h>


int main (int)
{
int num[8],num1[8];
int i,j,k=1,tmpA=0,tmpB=0;
srand( time(NULL) );
for( i = 0; i < 4; i++ )
{
  num[i]=rand()%10; //亂數產生1~10任意數字並放入陣列內
  for (j=0;j<i;j++)
  {
     if (num[i] == num[j]) //比較是否重複
     {
     i--; //重複則重新產生
     }
  }
}
while (k)
{
  for (i=0;i<=3;i++)
  {
    printf ("Please input the %d answers =>",i+1); //輸入答案並放入num1陣列內
    scanf ("%d",&num1[i]);
  }
  for (i=0;i<=3;i++)
  {
     if (num[i] == num1[i]) //比較數字及位置相同的數
     {
     tmpA+=1; //數字位置相同的數量放至tmpA內
     }
  }
  for (i=0;i<=3;i++)
  {
     for (j=1+i;j<=3+i;j++)
     {
     if (num[i] == num1[j]) //比較位置不同數字相同的數
     {
     tmpB+=1; //將數量放至tmpB內
     }
     num1[i+4]=num1[i];
     }
     num1[i]=0;
  }
  if (tmpA == 4 ) //猜出4A 則顯示good game並跳出回圈
  {
    printf ("Good Game , %d times\n",k);
    break ;
  }
  else printf ("%dA %dB\n",tmpA,tmpB);
  tmpA=0,tmpB=0;
  k+=1; //猜幾次的數
}
system ("PAUSE");
return 0;
}
作者 : dean0517(育)
[ 貼文 6 | 人氣 581 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/8/24 下午 05:25:42
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include "homework.h"

using namespace std;

int ansnumber[4],cpnumber[4];


void number(void)
{
int i;
srand((unsigned) time(NULL));

for(i=0;i<4;i++)
{
cpnumber[i]=rand()%10;
for(int j=i-1;j>=0;j--)
{
if(cpnumber[i]==cpnumber[j])
{
i--;
break;
}
}
}
}

int check(char *checkstr,int checklen)
{
int i;
if(checklen>4||checklen<0)
{
cout << "輸入數字長度為4\n";
return 1;
}

for(i=0;i<checklen;i++)
{
if(checkstr[i] >'9' || checkstr[i] <'0' )
{
cout << "請輸入數字\n";
return 1;
}
}

for(i=0;i<checklen;i++)
{
for(int j=i-1;j>=0;j--)
{
while(checkstr[i]==checkstr[j])
{
cout << "輸入重複\n";
return 1;
}
}
}

for(i=0;i<checklen;i++)
ansnumber[i]=(int)checkstr[i]-48;
return 0;

}

void innumber(void)
{
char play[100]="0";
int len;
do
{
cout << "請輸入4個數字:";
cin >> play;
len=strlen(play);
}while(check(play,len));
}

int cheackans(void)
{
int a=0,b=0;

for(int i=3;i>=0;i--)
{
for(int j=3;j>=0;j--)
{
if(cpnumber[i]==ansnumber[j])
{
if(i==j)
{
a++;
continue;
}
b++;
}
}
}
if(a==4)
{
cout << "恭喜你贏了!!" << endl;;
return 0;
}
else
{
cout << a << "A" << b << "B" << endl;;
return 1;
}
}

void guessnumber(void)//猜數字
{
number();
/*for(int i=0;i<4;i++)
cout << cpnumber[i];
cout << endl;測試用*/

do
{
cout << "================猜數字===============" << endl;
innumber();
}while(cheackans());

}
 板主 : simula
 > C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
C++
1 Raymond 13050 
2 青衫 4760 
3 simula 4690 
4 coco 4030 
5 白老鼠(Gary) 3670 
6 ozzy 2540 
7 Ben 2250 
8 Anderson 1960 
9 windblown 1650 
10 Kenny 1560 
C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.265625