[問題] C語言猜拳

看板C_and_CPP作者 (龍眼)時間11年前 (2013/05/02 02:15), 編輯推噓4(4022)
留言26則, 7人參與, 最新討論串1/1
我是個小小小新手@@ 學C語言不到一個月吧 最近老師出了一個作業是要猜數字 我寫到目前這樣了編譯是沒有問題 可是執行出來一直怪怪的 我還不太會debug...懇請各位高手告訴我方向就好 我不是要當伸手牌或擺爛 是真的寫到半夜想破頭不知道錯哪裡 想學觀念不用幫我改 告訴我哪個方向就好Q_Q 程式碼如下 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char *argv[]) { int i=5,win=0,lose=0,draw=0; while(i>0)//只要i>0 則執行括號內的內容 否則跳出 { char UserIn; //宣告玩家出拳的變數 printf("請輸入你要出的拳(Y代表剪刀、O代表石頭、W代表布):"); scanf("%c",&UserIn); fflush(stdin); int ComIn; //宣告電腦出拳的變數 srand( time(NULL) ); ComIn=rand()%3; // 電腦出的拳將以亂數進行 switch(ComIn) //根據電腦出的拳做以下回應 { case 0: //電腦出0(剪刀)則做以下決策 switch(UserIn) { case 'Y': printf("電腦出剪刀,玩家出剪刀,平手\n"); draw++; break; case 'O': printf("電腦出剪刀,玩家出石頭,玩家贏\n"); win++; break; case 'W': printf("電腦出剪刀,玩家出布,電腦贏\n"); lose++; break; break; } case 1: //電腦出1(石頭)則做以下決策 switch(UserIn) { case 'Y': printf("電腦出石頭,玩家出剪刀,電腦贏\n"); lose++; break; case 'O': printf("電腦出石頭,玩家出石頭,平手\n"); draw++; break; case 'W': printf("電腦出石頭,玩家出布,玩家贏\n"); win++; break; break; } case 2: //電腦出2(布)則做以下決策 switch(UserIn) { case 'Y': printf("電腦出布,玩家出剪刀,玩家贏\n"); win++; break; case 'O': printf("電腦出布,玩家出石頭,電腦贏\n"); lose++; break; case 'W': printf("電腦出布,玩家出布,平手\n"); draw++; break; break; } } i--; } printf("5場比賽中,您總共贏了%d次 輸了%d次 贏了%d次",win,lose,draw); system("PAUSE"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.6.26 ※ 編輯: RonYen 來自: 123.192.6.26 (05/02 02:15)

05/02 02:20, , 1F
你先用單步執行檢查流程
05/02 02:20, 1F

05/02 02:43, , 2F
就兩個地方 1)scanf 吃到前一次輸入的'\n'了
05/02 02:43, 2F

05/02 02:45, , 3F
2)外面的switch的break要放再夸號外
05/02 02:45, 3F

05/02 03:59, , 4F
mixed-case + 全小寫... xD 你應該沒看教科書吧
05/02 03:59, 4F

05/02 07:25, , 5F
什麼是mixed case@@? 給我關鍵字我去學
05/02 07:25, 5F

05/02 09:17, , 6F
switch裡面不要再放switch,用副程式分開比較清楚
05/02 09:17, 6F

05/02 09:19, , 7F
做一個副程式:可輸入電腦與玩家的手勢,輸出比較結果。
05/02 09:19, 7F

05/02 09:21, , 8F
int CompareGesture(int Com,int Player);
05/02 09:21, 8F

05/02 10:24, , 9F
二樓的第一個看不懂QQ 2)我改了 好像可以了 不過輸入YOW以
05/02 10:24, 9F

05/02 10:25, , 10F
外的字元會沒反應...我試試看加寫個default..
05/02 10:25, 10F

05/02 10:29, , 11F
如果有老師教的話,可以去找本書來輔助學習
05/02 10:29, 11F

05/02 11:15, , 12F
其實可以偷吃步 rand出結果再printf出電腦的拳
05/02 11:15, 12F

05/02 15:42, , 13F
其實C語言輸入可以看做很多串字元,每一串字元結束後面都
05/02 15:42, 13F

05/02 15:42, , 14F
有'\n'表示這串字元結束
05/02 15:42, 14F

05/02 15:44, , 15F
而scanf("%c",&UserIn);會吃到前一次輸入字串的結束'\n'
05/02 15:44, 15F

05/03 10:25, , 16F
謝謝各位的解答Q_Q
05/03 10:25, 16F

05/03 10:26, , 17F
話說小棣是學商的 因為學程才第一次接觸程式語言
05/03 10:26, 17F

05/03 10:27, , 18F
弟 所以我基礎不像資工那紮實
05/03 10:27, 18F

05/03 10:27, , 19F
想問一下版上先進 從0基礎想要搞懂這領域 該從何下手
05/03 10:27, 19F

05/03 10:28, , 20F
因為是去選修理工的c語言 老師會把一些他們學過的東西省略
05/03 10:28, 20F

05/03 10:29, , 21F
我手中是有洪維恩的c語言 可是老師出的作業好像都會超過
05/03 10:29, 21F

05/03 10:30, , 22F
課本難度 所以我在想是不是要一些補助知識@@?
05/03 10:30, 22F

05/03 13:35, , 23F
你都覺得超過難度,那你當然要另外多看書
05/03 13:35, 23F

05/03 13:35, , 24F
要先多看書熟悉基本語法,寫程式的觀念那你就多寫
05/03 13:35, 24F

05/03 13:36, , 25F
你都有上課了,不會就問老師,或跟同學討論
05/03 13:36, 25F

05/03 13:36, , 26F
等作業交完建議你可以跟其他同學交換程式戶相觀摩
05/03 13:36, 26F
文章代碼(AID): #1HWLkoAZ (C_and_CPP)