酷!學園

技術討論區 => 程式討論版 => 主題作者是: 麻糬妹 於 2005-05-12 20:24

主題: 不知道如何修改..可以幫我看一下嗎?
作者: 麻糬妹2005-05-12 20:24
#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;}這一行有錯...但我不知怎麼修改...可以告訴我嗎
主題: 不知道如何修改..可以幫我看一下嗎?
作者: twu22005-05-12 20:51
= 和 == 有什麼不同?
主題: 不知道如何修改..可以幫我看一下嗎?
作者: 螢火飛2005-05-12 21:02
少一個括號,自己找。
主題: 不知道如何修改..可以幫我看一下嗎?
作者: 麻糬妹2005-05-12 21:11
謝謝幫忙
主題: 不知道如何修改..可以幫我看一下嗎?
作者: 耗呆2005-05-12 21:12
好奇.....= =a
if(arr==arr1[j])&&(i!=j)
這個判斷式不會出錯嗎?
主題: 不知道如何修改..可以幫我看一下嗎?
作者: 麻糬妹2005-05-12 21:13
對~我剛有發現到~已經改過了~謝謝你的提醒
主題: 不知道如何修改..可以幫我看一下嗎?
作者: 麻糬妹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個數字若對的話就直接印出~不對的話再猜一次~要再用到迴圈嗎?
主題: 不知道如何修改..可以幫我看一下嗎?
作者: twu22005-05-13 08:22
你好像沒回答 = 與 == 有什麼差異.
要不要檢查一下你的程式所有用到 = 與 == 的地方, 有沒有用錯的?
主題: 不知道如何修改..可以幫我看一下嗎?
作者: 麻糬妹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();
     
   
     
       }
主題: 不知道如何修改..可以幫我看一下嗎?
作者: 螢火飛2005-05-14 22:04
你在迴圈中,用了 break;
break 什麼意思知道吧?
主題: 不知道如何修改..可以幫我看一下嗎?
作者: 麻糬妹2005-05-15 15:25
知道了...謝謝喔