查看單個文章
舊 2006-06-12, 02:29 PM   #8 (permalink)
hoio121
長老會員
 
hoio121 的頭像
榮譽勳章
UID - 43637
在線等級: 級別:9 | 在線時長:125小時 | 升級還需:15小時級別:9 | 在線時長:125小時 | 升級還需:15小時級別:9 | 在線時長:125小時 | 升級還需:15小時級別:9 | 在線時長:125小時 | 升級還需:15小時
註冊日期: 2003-02-28
文章: 614
精華: 0
現金: 16580 金幣
資產: 21480 金幣
預設

PHP 語法:
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
int main() 

 
int com[4],self[4],   /*com陣列是要儲存電腦隨機產生的數字;self陣列是要儲存使用者自己輸入到num後所分割出來的單個數字*/  
 
i,j,num;     /*i變數與j變數都是下面for迴圈要用到的變數;num是要讓使用者輸入一串數字*/  
  
 
FILE *file1;                    /* 宣告檔案指標 */
 
file1=fopen("list.txt","w");    /* 將 file1 指標 = 開啟檔案, w 寫入 */
  
 
restart:         /* 對應 RePlay 控制的標籤 */
     
 
srand(time(NULL)); /*加入此行可以使隨機的數字可以隨著時間變化而不會出現重複的*/  
        
 
for (i=0;i<4;i++)
     {                      
/*此for迴圈是要產生隨機數字*/  
      
com[i]=(rand()%9)+1
      for (
j=0;j<i;j++) 
          { 
           if (
com[j]==com[i])   /*這個if判斷如果產生重複的數字則要求電腦再重新產生一數字放回原位置內*/  
              
{
           
i--; 
               break; 
              } 
          } 
     } 
  

 while (
1)  
       {       
/*這裡的while是為了要在使用者輸入錯誤時重複執行*/ 
        
int a=0,b=0,war=0;  /*這裡的a,b也就是指遊戲中的a,b;war則是要判斷使用者輸入的數串是否有重複*/  
      
         
printf("輸入4個數字(輸入0結束):"); 
        
        
scanf("%d",&num); 
       
        
fprintf(file1,"你輸入的為%d     ",num); 
        if (
num==0)     /*此if控制當輸入0時 */ 
           

        
printf("笨蛋~你輸囉!\n") ; 
       
            
            if ( 
RePlay() ) /* RePlay 控制 */
               
{
                
fprintf(file1,"再玩一次\n" );                         
        goto 
restart
           }                    
        
fclosefile1 );  /* 關閉檔案 */
                   
            
return 0;             
           } 
        else if (
num>=10000 || num<1000)   /*此if是要判斷使用者輸入的數是否為4位數*/   
           
{
        
printf("輸入的數字有誤" );
            
fprintf(file1,"輸入的數字有誤" ); 
           }
        else 
       {   
/*當輸入的數確定為4位數且不是0時開始判斷a,b*/ 
            
for (i=3;i>=0;i--) /*此for迴圈將使用者輸入數串切割為單個數字放入self陣列*/ 
                

         
self[i]=num%10
                 
num/=10
                }
                 
            for (
i=0;i<4;i++) /*此for迴圈判斷使用者輸入的數串是否有重複*/  
                 
{   
                 for (
j=0;j<i;j++) 
             { 
                      if (
self[j]==self[i]) 
                 { 
                          
war++;     /*當使用者輸入數字重覆時war++,如果war++過則表示war不等於0可以拿來做下面判斷 */ 
                          
break; 
                         }  
                     } 
                }
                 
            if (
war==0)    /*當war不為0時表示使用者輸入數串沒有重複*/  
               

        for (
i=0;i<4;i++) 
            { 
                     if (
com[i]==self[i])  /*當數字相同且位置也相同時a++...兩個陣列內都放入i表示他們位置相同*/  
                         
a++; 
                     else 
                { 
                         for (
j=0;j<4;j++) 
                     {
                              if (
com[i]==self[j])  /*當數字相同位置不同時b++..位置變數一個為i一個為j*/  
                              
b++; 
                             } 
                        }  
                    } 
                if (
a==4)    /*輸出遊戲結果*/ 
                   
{
                    
printf("你輸入的為:%dA%bB\n,a,b"); 
                    
printf("你答對囉");
                    
fprintf(file1,"你輸入的為:%dA%bB\n,a,b"); 
                    
fprintf(file1,"你答對囉");        
                    
                    if ( 
RePlay() )  /* RePlay 控制 */
                       
{
                        
fprintf(file1,"再玩一次\n" );                         
            goto 
restart
               }                    
            
fclosefile1 );  /* 關閉檔案 */  
                    
                    
return 0
           }
                else 
           { 
                    
printf("你輸入的為: %d A %d B\n",a,b); 
                    
printf("請再輸入" ); 
                    
fprintf(file1,"%d A %d B\n",a,b); 
                    
                   } 
               } 
             else 
/*當war不為0表示數串有重複所以重新執行while迴圈*/ 
                

         
printf("輸入數字有誤\n" ); 
                 
fprintf(file1,"輸入數字有誤\n" ); 
                }        
           } 
       } 
}  

/* 再玩一次 */
int RePlay ()
{
 
char input[10];
 
int num;
 
printf("要再玩一次嗎(Y/N) ? ");

 
rest:
 
scanf("%s",&input);
 if ( 
input[0] == 'Y' input[0] == 'y' )
     return 
1;
 else if ( 
input[0] == 'n' input[0] == 'N' )
     {
     
printf("程式結束\n");
     
system("pause");
     return 
0;} 
 goto 
rest

修改完成,大概就像這樣囉。感謝大大的幫忙。
還有一個問題,就是我想印出答案在文件檔中。
不過打fprintf("%d",com[i]);
出現的卻不是答案,而是一串數字,請問該如何做呢
__________________
服務時間AM6:00~7:00,PM10:00~12:00
hoio121 目前離線  
送花文章: 2, 收花文章: 12 篇, 收花: 51 次
回覆時引用此帖