題:
請問有人會用C語言寫猜數字的程式麼
小揚揚
2004-12-18 23:57:52 UTC
要交作業的 但是我試ㄌ很久都寫不出來
希望有好心人可以幫幫我解決這ㄍ程式
謝謝
六 答案:
2004-12-19 00:36:22 UTC
# include

# include

void main()

{

int a1[5],a[5],i,j,m,c=0,b=0,flag=0,k; //宣告兩陣列a1與a,整數變數i,j,m,c,b,k,flag為判斷電腦/使用者所選的數字是否有任二個相同的                情況。

clrscr();     //清除營幕的函數

randomize();   //亂數函數

do{

a1[1]=random(10);   //將隨機選定的數字(數字判於0~9之間),選定後指定給a1[1]

a1[2]=random(10);  //將隨機選定的數字(數字判於0~9之間),選定後指定給a1[2]

a1[3]=random(10);  //將隨機選定的數字(數字判於0~9之間),選定後指定給a1[3]

a1[4]=random(10);  //將隨機選定的數字(數字判於0~9之間),選定後指定給a1[4]

if (a1[1]==a1[2] || a1[1]==a1[3] || a1[1]==a1[4] ||

a1[2]==a1[3] || a1[2]==a1[4] || a1[3]==a1[4])     //判斷電腦所選的數字是否有任二個相同的情況

{flag=1;}      //若flag=1,即表示電腦所選的數字是否有任二個相同

} while (flag==1);

flag=0;

for (k=1;k<=10;k++)  //For Loop

{c=0;b=0;

printf("Please input number :");   //列卬出要求使用者輸入數字的提示訊息

scanf("%d",&m);        //從keyboard讀入其所輸入的數字

a[1]=m/1000;     //使用者輸入數字的個位數部份

a[2]=(m/100)%10;   //使用者輸入數字的十位數部份

a[3]=(m%100)/10;   //使用者輸入數字的佰位數部份

a[4]=m%10;     //使用者輸入數字的仟位數部份

for (i=1;i<=4;i++)     /*此程式部份開始判斷電腦所亂數選定的一組數字,

if (a[i]==a1[i]) c=c+1;    是否與使用者從鍵盤所鍵入的一組數字是否有如

for (i=1;i<=4;i++)     下情況:1‧位置/數字皆符合,為xA

for (j=1;j<=4;j++)         2‧數字符合,但位置不符,為xB

if (a[i]==a1[j]) b=b+1;

printf("%dA%dB\n",c,b-c); 將xAxB判定結果,予以列印在營幕上。   */

if (a[1]==a1[1] && a[2]==a1[2] && a[3]==a1[3] && a[4]==a1[4])

{printf("It Is Great . You Are Right .\n");flag=1;}   //遊戲結果,判定使用者獲勝!

}

printf("The Real Number Is %d%d%d%d .",a1[1],a1[2],a1[3],a1[4]);  //遊戲結果,判定電腦獲勝,告知使用者答案為何?

}
?
2004-12-28 02:46:05 UTC
程式要自己想....
?
2004-12-24 21:16:39 UTC
還真是辛苦你了哦 大偉人 噁



2004-12-27 01:57:25 補充:

...........
buddha
2004-12-24 12:09:47 UTC
都寫的太長了吧!~
cra
2004-12-21 15:26:49 UTC
同樣的問題不要發問2次

你還有同學也問一樣的問題

http://tw.knowledge.yahoo.com/question/index?qid=1004121902144

上面那位老大的程式要改一下



我還以為這程式是你寫的

http://tw.knowledge.yahoo.com/question/?qid=1004121903300

原來是別人先回應你在把他複製貼上

唉......

真不知道我是幫你還是害你

有點幫人還失落的感覺

------------------------

#include

#include



void main()

{

int a1[5],a[5],i,j,m,c,b,flag,k;

flag=0;



randomize();

clrscr();



do{

a1[1]=random(10);

a1[2]=random(10);

a1[3]=random(10);

a1[4]=random(10);



if ((a1[1]==a1[2]) || (a1[1]==a1[3]) || (a1[1]==a1[4]) || (a1[2]==a1[3]) || ( a1[2]==a1[4]) || (a1[3]==a1[4]))

{;}

else

{flag=1;}



} while (flag==0);

/*this is answer */

/*printf("\n\ni find%d%d%d%d",a1[1],a1[2],a1[3],a1[4]);*/









for (k=1;k<=10;k++)

{c=0;b=0;

printf("input %d times(total 10 times),please input number :",k);

scanf("%d",&m);

if((m<123)||(m>9876))

{printf("\nError!! please enter a correct 4 numbers (norepead)\n");

continue;

}

a[1]=m/1000;

a[2]=(m/100)%10;

a[3]=(m/10)%10;

a[4]=m%10;

for (i=1;i<=4;i++)

if (a[i]==a1[i]) c=c+1;

for (i=1;i<=4;i++){

for (j=1;j<=4;j++){

if (a[i]==a1[j]) {b=b+1;}

}

}



if ((a[1]==a[2]) || (a[1]==a[3]) || (a[1]==a[4]) || (a[2]==a[3]) || ( a[2]==a[4]) || (a[3]==a[4]))

{continue;}



if(c!=4)

{printf("Computer : %dA%dB\n\n",c,b-c);}

else

{printf("\n\nIt is the answer . You Are Right!! .\n");

break;

}

}

if(k>10)

printf("The Real Number is %d%d%d%d .",a1[1],a1[2],a1[3],a1[4]);

getchar();

getchar();

}



2004-12-24 17:47:20 補充:

對阿!!所以不會以後在好心的幫別了,這樣可以了吧



2004-12-24 18:07:30 補充:

同樣問題回答3次我還要照別人風格去改你以為我時間多嗎?



2004-12-27 00:15:00 補充:

給樓上:你能這麼想就知道你愛台灣啦!!!
印辰
2004-12-20 15:27:21 UTC
按照以下步驟相信你一定可以完成你的作業的,程式要自己寫過一次才會了解。



玩家猜電腦

1.隨機產生出不重覆的四位數

2.玩家輸入答案(當然要偵測玩家答案是否符合規則)

3.玩家的答案跟電腦的答案做比較,輸出?A?B

4.判斷是否正確,正確即結束遊戲,錯誤回到步驟2

PS:2~4為一個loop



如果要加上電腦猜玩家的答案的話要另外增加以下步驟

1.產生解集

2.電腦從解集中挑可能的答案來猜

剩下的就大同小異了


此內容最初發佈在 Y! Answers 上,這是一個於 2021 年關閉的問答網站
Loading...