全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2484
推到 Plurk!
推到 Facebook!

猜數字小遊戲

尚未結案
亞伯拉罕‧洛克
一般會員


發表:2
回覆:0
積分:0
註冊:2004-12-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-21 14:50:25 IP:61.30.xxx.xxx 未訂閱
為何我的亂數取出來,應該要是只有4位(我的陣列元素只有4)的 卻出現了大於4位的數字呢? 還有不管如何,我的結果總是0A0B??    麻煩各位高手幫我一下。 謝謝~ 以下是我的原始檔:
#include"stdio.h"
#include     void compare(int *user,int *com){
// use case to judge 
 int x=0;
 int y=0;
 int i,j;    for(i=0; i<=3; i  )
 {
   for(j=0; j<=3; j  )
   {
     if(user[i]==com[j])//像是比內容
       y  ;
   }
   if(user[i]==com[i])//像是比對應位置
     x  ;
 }
 y=y-x;
 printf("\nresult: %d A %d B\n", x, y);
     }    void main(){    int com_num[4];
int user_num[4];
int i;    for(i=0;i<4;i  )
  com_num[i] = rand()%9;      printf("This is com_num %d\n",com_num[4]);
  printf("現在也請輸入4個號碼,以做比較,請勿輸入非整數的數值~\n");      for(i=0;i<4;i  )
    scanf("%d",&user_num);      printf("This is user_num %d\n",user_num);      //int *com_numPtr = com_num;
  //my problem is how to judge the address wether yes ot not?
  //先與同樣位置的陣列元素比,試試吧
  compare(user_num,com_num);
      
  
}
李國維
高階會員


發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-21 16:10:01 IP:219.84.xxx.xxx 未訂閱
把 for(i=0;i<4;i ) com_num[i] = rand()%9; 換成
int com_num[4];
int user_num[4];
int i,j,iTmpValue;
bool bValue;    Randomize();
for(i=0;i<4;i  )
{
    do
    {
         bValue = false;
         iTmpValue = rand() % 9;
         for ( j = 0 ; j < i ; j  )
         {
             if (iTmpValue == com_num[j])
              bValue = true;
         }
    }while (bValue);
    com_num[i] = iTmpValue;        
}
就可以ㄌ
Akqj1098
一般會員


發表:14
回覆:60
積分:14
註冊:2002-05-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-23 12:54:26 IP:203.66.xxx.xxx 未訂閱
為何我的亂數取出來,應該要是只有4位(我的陣列元素只有4)的 卻出現了大於4位的數字呢?
  當然啦,你寫錯一行了
    printf("This is com_num %d\n",com_num[4]);
  這一行這樣寫表示你 print com_num 的第五個元素耶(陣列從0開始)
  目前第五的元素的資料,當然是堆沒有用的東西囉
  應該改成這樣
  for(i=0;i<4;i  )
    printf("This is com_num %d\n",com_num[i]);
還有不管如何,我的結果總是0A0B??
    for(i=0;i<4;i  )
      scanf("%d",&user_num);
                 ^^^^^^^^^^
  這一行也錯拉  
  應該改成這樣才對
  for(i=0;i<4;i  )
    scanf("%d",&user_num[i]);
還有,你這樣寫 C randon 出來的值永遠也一樣 等於沒有 radon 一樣 建議加上 "時間" 作參數才會有真正的 radon 喔
引言: 麻煩各位高手幫我一下。 謝謝~ 以下是我的原始檔:
#include"stdio.h"
#include     void compare(int *user,int *com){
// use case to judge 
 int x=0;
 int y=0;
 int i,j;    for(i=0; i<=3; i  )
 {
   for(j=0; j<=3; j  )
   {
     if(user[i]==com[j])//像是比內容
       y  ;
   }
   if(user[i]==com[i])//像是比對應位置
     x  ;
 }
 y=y-x;
 printf("\nresult: %d A %d B\n", x, y);
     }    void main(){    int com_num[4];
int user_num[4];
int i;    for(i=0;i<4;i  )
  com_num[i] = rand()%9;      printf("This is com_num %d\n",com_num[4]);
  printf("現在也請輸入4個號碼,以做比較,請勿輸入非整數的數值~\n");      for(i=0;i<4;i  )
    scanf("%d",&user_num);      printf("This is user_num %d\n",user_num);      //int *com_numPtr = com_num;
  //my problem is how to judge the address wether yes ot not?
  //先與同樣位置的陣列元素比,試試吧
  compare(user_num,com_num);
      
  
}
發表人 - akqj1098 於 2004/12/23 12:57:55
系統時間:2024-04-26 0:31:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!