[問題] switch的問題

看板C_and_CPP (C/C++)作者 (呈呈)時間14年前 (2011/09/17 10:36), 編輯推噓6(6017)
留言23則, 11人參與, 最新討論串2/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) c++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 輸入1~4會跑出春夏秋冬 餵入的資料(Input): #include <stdio.h> #include <stdlib.h> int main(void) { int number; printf("please to import number\n"); scanf("%d",&number); switch(number) { case 1: printf("春天"); break; case 2: printf("夏天"); break; case 3: printf("秋天"); break; case 4: printf("冬天"); break; default : printf("Failed!\n"); } system("pause"); return 0; } 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): 我這程式跑的出來 只是我有疑問 因為我輸入a,b,c,d之類的英文數字也跑出答案 1.是不是因為程式把它翻譯成十進位轉換成數字讀出來呢?? 2.有辦法輸入英文讓他跑出錯誤嗎? 謝謝各位大大 -- 小本經營賣場 http://tw.user.bid.yahoo.com/tw/user/Y2286184456 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.25.238

09/17 11:12, , 1F
09/17 11:12, 1F

09/17 11:14, , 2F
不過剛剛用原本的程式來跑是沒有出現你說的問題
09/17 11:14, 2F

09/17 11:51, , 3F
大大不好意思~我跑你的程式是錯誤的耶
09/17 11:51, 3F

09/17 12:05, , 4F
我輸入a,b,c,d後,跑出來的結果符合預期,即顯示Failed!
09/17 12:05, 4F

09/17 12:07, , 5F
ha你有重新build程式嗎??重新編譯看看
09/17 12:07, 5F

09/17 12:14, , 6F
剛剛測試shile的程式碼,因為scanf內是%d,輸入英文
09/17 12:14, 6F

09/17 12:14, , 7F
會跳開,所以不會顯示failed,我的編譯器是VS2008
09/17 12:14, 7F

09/17 12:16, , 8F
修改幾個地方就OK了 char number;
09/17 12:16, 8F

09/17 12:16, , 9F
while((scanf("%s",&number))
09/17 12:16, 9F

09/17 12:17, , 10F
case '1': <--其他數字一樣這樣改
09/17 12:17, 10F

09/17 12:36, , 11F
%c 吧,%s 是字串耶 XD
09/17 12:36, 11F

09/17 12:40, , 12F
if(scanf("%d",&number)!=1)error();
09/17 12:40, 12F

09/17 13:15, , 13F

09/17 15:34, , 14F
please to import number是什麼東西...
09/17 15:34, 14F

09/17 16:28, , 15F
please input a number??
09/17 16:28, 15F

09/18 03:20, , 16F
問題在 number 可能沒有初始化。
09/18 03:20, 16F

09/18 03:22, , 17F
@flydragon198 除了 %c 以外小心 EOF :P
09/18 03:22, 17F

09/18 03:23, , 18F
@erotic 這叫做運氣好 xD
09/18 03:23, 18F
很謝謝各位大大 to flydragon198 我有試過這個可是當我亂輸入1222 or1xxx出來的答案卻是春天等等 有辦法克服嗎?? 另外編譯器是這個嗎?Version 2, June 1991 to Favonia 怎麼初使化~ to firejox check = scanf("%d",&number); switch(number*check) 這兩行是甚麼東西呀 你的程式我可以用呢 只是這兩行看不懂 ※ 編輯: ha127437 來自: 140.120.25.238 (09/18 12:09) ※ 編輯: ha127437 來自: 140.120.25.238 (09/18 12:13)

09/18 12:15, , 19F
scanf會有傳回值呀
09/18 12:15, 19F

09/18 12:37, , 20F
一開始number可能是亂七八糟的數字scanf讀失敗時number可
09/18 12:37, 20F

09/18 12:38, , 21F
能還是亂七八糟的數字。根本之道是檢查scanf有沒有讀失敗
09/18 12:38, 21F

09/18 12:40, , 22F
favon大大可以再說詳細一點嗎? 不太瞭= ="
09/18 12:40, 22F

09/18 13:44, , 23F
http://0rz.tw/waHUq 你需要學著查document看函數說明:)
09/18 13:44, 23F
文章代碼(AID): #1ET0UUoI (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1ET0UUoI (C_and_CPP)