SOGO論壇
  登入   註冊   找回密碼
查看: 1260|回覆: 0
列印 上一主題 下一主題

[問題求助] 關於 C 程式語言的問題 ^^" [複製連結]

Rank: 4

狀態︰ 離線
跳轉到指定樓層
1
發表於 2010-6-3 11:50:36 |只看該作者 |倒序瀏覽
請各位大大幫我看一下...

我朋友現在碰上兩個問題 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);
}
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

喜歡你的吻、你的擁抱;但我們只是朋友,只是那夜太過寂寞。
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-5-8 09:06

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部