將字母輸入給int型變數的情況

2021-10-23 02:18:23 字數 647 閱讀 5658

洛谷p1957口算練習題,輸入的資料可能是三個(第乙個是字元,後兩個是整型) 也可能是兩個(都是整型)。

原因:cin有乙個特性,如果定義了乙個int型的變數,輸入這個變數時就會檢測輸入的是不是數字。如果程式發現使用者輸入了錯誤內容時(輸入的不是int型),程式就會鎖住cin。

如何解決:判斷是否輸入錯誤,若輸入錯誤就執行 cin.clear(); ,以重置cin狀態,使程式能繼續讀入其他資料。這時輸入的錯誤資料還會在緩衝區中,繼續輸入資料的話,還是會從這個資料開始讀取。

例如:

int a =

1, b =

2, c =3;

cin >> a >> b >> c;

cout << a <<

' '<< b <<

' '<< c

//結果:6 0 3

對該題:

int num[2]

;char k;

//對輸入兩個或三個型別的處理 if(

!(cin>>num[0]

))//若讀入的資料不是int型

else

//若輸入的第乙個資料是int型,則繼續輸入下乙個

cin>>num[1]

;

C 自我掃盲 1 int變數cin輸入字母報錯

為啥給int賦值字元常量沒問題,通過cin輸入字元就會出錯?輸入數字 輸入字母 d 圖三 看到同樣問題的部落格裡大佬的回答 參考 樓主的問題根源在於 你可能認為字母和一些符號才算字元。其實,翻開字元ascii表,你可以看到數字字元也是字元,製表符 換行符 分頁符 空字元之類的也列在其中,也就是說,a...

將乙個int型的高低位反轉

乙個int型資料一般占用4位元組,即32位。實現乙個int型的高低位反轉就是按乙個位元組一次取出其值暫時儲存到乙個unsigned char陣列中,然後按照相反的方向將資料的值寫回int型資料中。c 實現如下 include include intmain char p char data prin...

dos下將命令的執行結果賦給變數

在使用spark時,需要在spark env.cmd中,為環境變數spark dist classpath賦值,賦的值是執行命令 hadoop classpath 的返回結果。如果是在linux環境下,比較簡單,直接 export spark dist classpath hadoop classp...