- 註冊時間
 - 2009-6-14
 - 最後登錄
 - 2013-2-25
 - 主題
 - 查看
 - 積分
 - 131
 - 閱讀權限
 - 40
 - 文章
 - 163
 - 相冊
 - 0
 - 日誌
 - 7
  
 
 
 
  
狀態︰
 離線  
 
 | 
請各位大大幫我看一下...    
 
我朋友現在碰上兩個問題 1.最後要呼叫自己,不知道要輸入啥! 2.第二個副程式適用指標當參數 抓陣列的直進去,所以不知道要怎麼讓他遞迴! 3.最大的問題在...最後一個函數要怎樣讓他呼叫自己! 
 
我有看過,我覺得他邏輯好奇怪,希望他全部重寫過...,他的要求就是...可以的話不要改太多,不知道有沒有大大可以幫忙    
 
 
#include<stdio.h> 
#include<stdlib.h> 
#include<time.h> 
 
int main() 
{ 
      int n=16; 
       int x,y,z,p[n],c[n]; 
      int four(int x); 
          
      int *pe=p; int *co=c; 
      printf("這是一個賓果遊戲\n"); 
      printf("請選擇你要玩的大小 (4*4 )\n"); 
      printf("4*4請輸入4 \n若想離開請輸入3\n"); 
      scanf("%d",&x); 
      if(x==4) 
      four(x); 
       
      if(x==3); 
      system ("pause"); 
}         
int four(int x) 
{ 
       
     int n=16; 
     int p[n], c[n],i,j=0,m,l; 
     int g(int *pe,int *co);    
      int *pe=p; int *co=c; 
     srand(time(NULL)); 
for (i=0;  i<n;  i++){ 
        do{ 
             c=1+ rand()%16; 
 
             for (j=0; j<i;j++) 
                  if (c==c[j]) {c=0;   break;} 
        }while (c==0); 
        
         
    }    
 
     printf("請輸入你要設定的數字\n數字編號如下\n1 2 3 4 \n5 6 7 8\n9 10 11 12\n13 14 15 16\n請依序輸入 每輸入一個字請按一次enter\n"); 
 for (i=0;  i<n;  i++){ 
         
      scanf("%d",&m); 
      p=m; 
      for (j=0; j<i;j++) 
      {if (p==p[j]) 
      {i--;  
      printf("error\n");    
      break;} 
       if(p>n) 
       {i--; 
        printf("error\n");  
        break; 
        }  
}}  
         
     printf("以下是你的數字編排\n");  
     for(n=1;n<=(x*2)+1;n++) 
     { 
        if(n==2) 
        printf(" | %2d | %2d | %2d | %2d |\n",p[0],p[1],p[2],p[3]); 
        if(n==4) 
        printf(" | %2d | %2d | %2d | %2d |\n",p[4],p[5],p[6],p[7]); 
        if(n==6) 
        printf(" | %2d | %2d | %2d | %2d |\n",p[8],p[9],p[10],p[11]); 
        if(n==8) 
        printf(" | %2d | %2d | %2d | %2d |\n",p[12],p[13],p[14],p[15]); 
        if(n==1) 
        printf("╭----------------------╮\n"); 
        if(n==9) 
        printf("╰----------------------╯\n"); 
        if(n==3 || n==5 ||n==7) 
        printf(" |-----------------------| \n"); 
     } 
    g(p,c); 
} 
int g(int *pe,int *co)  
{ 
     int a,b=0,c=0,i,j,k,l,n=16; 
     printf("請輸入一個數字(你要消去的數字)\n");  
     scanf("%d",&a); 
     for(i=0;i<n;i++) 
     {if(*(pe+i)==a) 
     { *(pe+i)=0;  
     break; } 
     for(j=0;j<n;j++) 
     if(*(co+j)==a) 
     { *(co+j)=0;  
       break;  
      }  
     } 
     for(n=1;n<=9;n++) 
     { 
        if(n==2) 
        printf(" | %2d | %2d | %2d | %2d |\n",*(pe+0),*(pe+1),*(pe+2),*(pe+3)); 
        if(n==4) 
        printf(" | %2d | %2d | %2d | %2d |\n",*(pe+4),*(pe+5),*(pe+6),*(pe+7)); 
        if(n==6) 
        printf(" | %2d | %2d | %2d | %2d |\n",*(pe+8),*(pe+9),*(pe+10),*(pe+11)); 
        if(n==8) 
        printf(" | %2d | %2d | %2d | %2d |\n",*(pe+12),*(pe+13),*(pe+14),*(pe+15)); 
        if(n==1) 
        printf("╭----------------------╮\n"); 
        if(n==9) 
        printf("╰----------------------╯\n"); 
        if(n==3 || n==5 ||n==7) 
        printf(" |-----------------------| \n"); 
     } 
     printf("接下來是電腦選取數字\n");  
     srand(time(NULL)); 
     k=(rand()%16)+1 ;  
     for(i=0;i<16;i++) 
     {if(*(pe+i)==k); 
     { *(pe+i)=0;  
     break;} }  
     for(j=0;j<n;j++) 
     if(*(co+j)==k) 
     { *(co+j)=0;  
       break;  
      } 
      for(n=1;n<=9;n++) 
     { 
        if(n==2) 
        printf(" | %2d | %2d | %2d | %2d |\n",*(pe+0),*(pe+1),*(pe+2),*(pe+3)); 
        if(n==4) 
        printf(" | %2d | %2d | %2d | %2d |\n",*(pe+4),*(pe+5),*(pe+6),*(pe+7)); 
        if(n==6) 
        printf(" | %2d | %2d | %2d | %2d |\n",*(pe+8),*(pe+9),*(pe+10),*(pe+11)); 
        if(n==8) 
        printf(" | %2d | %2d | %2d | %2d |\n",*(pe+12),*(pe+13),*(pe+14),*(pe+15)); 
        if(n==1) 
        printf("╭----------------------╮\n"); 
        if(n==9) 
        printf("╰----------------------╯\n"); 
        if(n==3 || n==5 ||n==7) 
        printf(" |-----------------------| \n");   
      } 
     for(i=3;i<16;i+4) 
     {if(*(pe+i-3)==0 && *(pe+i-2)==0 && *(pe+i-1)==0 && *(pe+i)==0 ) 
     b=b+1; 
     }  
     for(j=3;j<16;j+4) 
     {if(*(co+j-3)==0 && *(co+j-2)==0 && *(co+j-1)==0 && *(co+j)==0 ) 
     c=c+1; 
     } 
     if(b>=3) 
     {printf("win"); return 0;} 
     if(c>=3) 
     {printf("lose");  return 0;} 
     g(pe,co); 
} |   
 
  
 |