- 註冊時間
- 2009-6-14
- 最後登錄
- 2013-2-25
- 主題
- 查看
- 積分
- 131
- 閱讀權限
- 40
- 文章
- 181
- 相冊
- 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);
} |
|