精華區beta NAOE-87 關於我們 聯絡資訊
唉…計程作業寫不出來 於是發憤去寫政大資管的題目 很簡單…就是寫出來一個猜數字的程式 覺得蠻有啟發性的 比我們的開檔關檔好玩多了 …我認為可以建議蔡老師改變一下作業的方向 以下是原始碼…大家參考一下吧 不吝賜教^^ 備註:以下有些註解是寫給學伴看的,大家裝做沒看到就好了^^ #include <stdio.h> #include <stdlib.h> #include <time.h> void main() { int ans[4],guess[4],a,b,i,j,k; srand(time(NULL)); //使系統產生一亂數,有問題的話查函式庫 ans[0]=rand()%10; //以下是一個數一個數地檢查,讓四個數字不能重複 do { ans[1]=rand()%10; }while (ans[0]==ans[1]); do { ans[2]=rand()%10; }while (ans[0]==ans[2] || ans[1]==ans[2]); do { ans[3]=rand()%10; }while (ans[0]==ans[3] || ans[1]==ans[3] || ans[2]==ans[3]); for(i=0;i<4;i++) //這是答案,要交的時候可以把這段刪掉^^ { printf("%d\n",ans[i]); } k=1; do{ printf("please input a 4 digit number (0~9) with no repeat (seperated by space bar)\n"); for(i=0;i<4;i++){ //輸入數字,用空白鍵隔開 scanf("%d",&guess[i]); } if(guess[0]==guess[1] || guess[0]==guess[2] || guess[0]==guess[3]//如有數字重複,跳出程式 || guess[1]==guess[2] || guess[1]==guess[3] || guess[2]==guess[3])//有點爆力,但不知怎麼解決:( { printf("\nthe number should be with no repeat, please try again\n"); exit(1); } a=0; b=0; for(j=0;j<4;j++) { for(i=0;i<4;i++) { if(ans[i]==guess[i]) //因為經過兩個for迴圈,所以產生之a值等於4*4 a++; //所以下面輸出時要用a/4才行^^ else if(ans[j]==guess[i]) b++; } } if((a/4)==4) { printf("excellent !! you got it ^^\n"); printf("you took %d times to solve it!!\n",k); exit(1); } else printf("the result is %d A %d B,guess again\n",a/4,b); k++; if(k>=10) //假如玩超過十次,就狠狠地罵他^^ { printf("Are you nuts, go to hell\n"); exit(1); } }while((a/4)!=4); //只要a/4不等於4就繼續跑 } -- ※ 發信站: 批踢踢實業坊(ptt.twbbs.org) ◆ From: h62.s82.ts30.hi