作者 主題: 不知道如何修改..可以幫我看一下嗎?  (閱讀 4892 次)

0 會員 與 1 訪客 正在閱讀本文。

麻糬妹

  • 可愛的小學生
  • *
  • 文章數: 14
    • 檢視個人資料
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{    int arr[4],arr1[4],i,j,a,b;
      int flag=0;
      long temptime;
      srand(time(&temptime)%60);
     
      do{
           for(i=0;i<4;i++)
           
                {arr1=rand()%10;}
                if((arr[0]==arr1[1]||(arr[0]==arr1[2])||(arr[0]==arr1[3])||(arr[1]==arr1[2])||(arr[1]==arr1[3])
                ||(arr[2]==arr1[3]))
                {flag=0;}
                else
                {flag=1;}
                }while (flag=0);
          printf("所預測的數字: \n");
          scanf("%d",&n);
          a=0;
          b=0;
              for(i=0;i<4;i++)
              {
                 for(j=0;j<4;j++)
                 if(arr==arr1[j])
                 a=a+1;
                 
                 if(arr==arr1[j])&&(i!=j)
                 b=b+1;
              }
             
              printf("比對結果是 %da %db\n",a,b);
             
              if(a==4)
              return 1;
             
              else
              return 0;
}                                          
               
執行出來時..它說{flag=0;}這一行有錯...但我不知怎麼修改...可以告訴我嗎

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
不知道如何修改..可以幫我看一下嗎?
« 回覆 #1 於: 2005-05-12 20:51 »
= 和 == 有什麼不同?

螢火飛

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 400
    • 檢視個人資料
    • http://firefly.idv.tw
不知道如何修改..可以幫我看一下嗎?
« 回覆 #2 於: 2005-05-12 21:02 »
少一個括號,自己找。

麻糬妹

  • 可愛的小學生
  • *
  • 文章數: 14
    • 檢視個人資料
不知道如何修改..可以幫我看一下嗎?
« 回覆 #3 於: 2005-05-12 21:11 »
謝謝幫忙

耗呆

  • 憂鬱的高中生
  • ***
  • 文章數: 112
    • 檢視個人資料
不知道如何修改..可以幫我看一下嗎?
« 回覆 #4 於: 2005-05-12 21:12 »
好奇.....= =a
if(arr==arr1[j])&&(i!=j)
這個判斷式不會出錯嗎?

麻糬妹

  • 可愛的小學生
  • *
  • 文章數: 14
    • 檢視個人資料
不知道如何修改..可以幫我看一下嗎?
« 回覆 #5 於: 2005-05-12 21:13 »
對~我剛有發現到~已經改過了~謝謝你的提醒

麻糬妹

  • 可愛的小學生
  • *
  • 文章數: 14
    • 檢視個人資料
不知道如何修改..可以幫我看一下嗎?
« 回覆 #6 於: 2005-05-12 21:54 »
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{     int arr[4],arr1[4],i,j,a,b,n;
      int flag=0;
      long temptime;
      srand(time(&temptime)%60);
     
      do{
           for(i=0;i<4;i++)
           
                {arr1=rand()%10;}
                if((arr[0]==arr1[1])||(arr[0]==arr1[2])||(arr[0]==arr1[3])||(arr[1]==arr1[2])||(arr[1]==arr1[3])
                ||(arr[2]==arr1[3]))
                {flag=0;}
                else
                {flag=1;}
                }while (flag=0);
          printf("所預測的數字: \n");
          scanf("%d",&n);
          a=0;
          b=0;
              for(i=0;i<4;i++)
              {
                 for(j=0;j<4;j++)
                 if(arr==arr1[j])
                 a=a+1;
                 
                 if((arr==arr1[j])&&(i!=j))
                 b=b+1;
              }
             
              printf("比對結果是 %da %db\n",a,b);
     
             
             
             
 getchar();            
}                                          


有沒有蛇麼方法讓4個數字若對的話就直接印出~不對的話再猜一次~要再用到迴圈嗎?

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
不知道如何修改..可以幫我看一下嗎?
« 回覆 #7 於: 2005-05-13 08:22 »
你好像沒回答 = 與 == 有什麼差異.
要不要檢查一下你的程式所有用到 = 與 == 的地方, 有沒有用錯的?

麻糬妹

  • 可愛的小學生
  • *
  • 文章數: 14
    • 檢視個人資料
不知道如何修改..可以幫我看一下嗎?
« 回覆 #8 於: 2005-05-13 19:37 »
==這個地方沒有錯耶
倒是這個程式為什麼執行時輸入第二次所猜的數字時就直接關閉視窗了..錯在哪呢?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
      int arr[4],arr1[4],i,j,n,count,a,b,k;
      int flag=0;
      char c;
      long temptime;
      srand(time(&temptime)%60);
     
      do{
           for(i=0;i<4;i++)
           
                {arr1=rand()%10;}
                if((arr1[0]==arr1[1])||(arr1[0]==arr1[2])||(arr1[0]==arr1[3])||(arr1[1]==arr1[2])||(arr1[1]==arr1[3])||(arr1[2]==arr1[3]))
                {flag=0;}
                else
                {flag=1;}
        } while (flag==0);
        //printf("\n%d%d%d%d",arr1[0],arr1[1],arr1[2],arr1[3]);
         do{
             
          printf("請輸入預測的數字:\n");  
          count=scanf("%d",&n);
               
          printf("%d",n);
         
         
         
          arr[0]=n/1000;
          arr[1]=(n%1000)/100;
          arr[2]=((n%1000)%100)/10;
          arr[3]=(((n%1000)%100)%10);
          if((arr[0]==arr[1])||(arr[0]==arr[2])||(arr[0]==arr[3])||(arr[1]==arr[2])||(arr[1]==arr[3])||(arr[2]==arr[3]))
         
          printf("不可以輸入重複的數字!!");
     
         
           a=0;
           b=0;
             
              for(i=0;i<4;i++)
              {
                 for(j=0;j<4;j++)
                 {
                 if((arr==arr1[j])&&(i==j))
                 a=a+1;
                 
                 if((arr==arr1[j])&&(i!=j))
                 b=b+1;
                 }
              }
              printf("比對結果是 %da %db\n",a,b);
           
              break;
              if (a!=4)
              printf("再猜一次\n");
              else
             
              printf("猜對了\n");
              }while((c=getchar())!='x');
       getchar();
     
   
     
       }

螢火飛

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 400
    • 檢視個人資料
    • http://firefly.idv.tw
不知道如何修改..可以幫我看一下嗎?
« 回覆 #9 於: 2005-05-14 22:04 »
你在迴圈中,用了 break;
break 什麼意思知道吧?

麻糬妹

  • 可愛的小學生
  • *
  • 文章數: 14
    • 檢視個人資料
不知道如何修改..可以幫我看一下嗎?
« 回覆 #10 於: 2005-05-15 15:25 »
知道了...謝謝喔