cin 與 getchar 中的坑

2022-03-10 13:44:26 字數 1391 閱讀 3078

今天在一道題上發現乙個坑。

輸入三個字元,按以下規則求其平均值。

(1)如果是數字0~9,那麼直接參與求值;

(2)如果是其他字元,則其ascii碼參與求值。

輸入

輸入資料有多組。第一行是資料的組數t,接下來由t行,每行有3個字元,沒有其他任何多餘字元。

輸出

對於每組輸入,根據規則輸出平均值。保留2位小數。

樣例輸入

2 123 1a3

樣例輸出

2.00 23.00

這是我栽了幾次坑之後,還是錯的**:

#include

#include

using namespace std;

int main()

printf("%0.2lf\n",sum/3.0);

}return 0;

}發現有什麼問題嗎?

在看一看正確的**:

#include

#include

using namespace std;

int main()

printf("%0.2lf\n",sum/3.0);

}return 0;

}發現問題了沒?

兩組測試資料即可發現問題:1 3(中間為空格) 和123

下面就這個問題說一說:

①cin>>:無法接收空格、tap鍵且以空格、tap鍵、回車符為分隔符;

②cin.get( ):可以接收空格、tap鍵且以回車符為結束符;

一:可輸入單個字元

格式:char ch;

ch=cin.get( );/cin.get(ch);

二:可輸入字串

格式:cin.get(字元陣列名,元素個數)

③getline( ):可接收空格、tap鍵且以回車符為結束符;

格式:string str;//字串變數

getline(cin,str);

④cin.getline( ):可接收空格、tapa鍵且以回車符結束;

格式:cin.getline(字元陣列名,元素個數)

char m[20];

cin.getline(m,20);

③和④類似,單數getline( )屬於string流類,而cin.getline( )屬於istream流類,是不一樣的函式。

c語言中的gets( )和getchar( )

①gets(字元陣列名)用於接收字串,可包括空格、tap鍵且以回車符結束;

②getchar(字元變數名)用於接收單個字元且以回車符結束,一般需要兩個。前乙個接收字元,後乙個接收回車符。

③putchar(字元變數名或整常數)

C 之 cin 與 !cin 的原理分析

在判斷檔案開啟成功與否或是連續從流中讀取資料時,就要用到對流對像的操作,比如if cin 或是 whie cin 等等。while cin val 我們都知道 cin 是乙個流物件,而 運算子返回左邊的流物件,也就是說 cin val 返回 cin,於是 while cin val 就變成了 whi...

c 中cin與cout 詳解

cin與cout 一 標準輸入函式cin 不知道說它是個函式對還是不對,它是代表標準的輸入裝置 鍵盤。他是屬於流的,他的用法和流的用法是一樣的。也就是 cin 變數 小小的說明一下,輸入多個變數可以寫在一行,如 cin x y z 這樣寫不是不允許,而是不好看,如果是不同的變數型別,那就更是沒頭沒腦...

getchar 與EOF的總結

一 getchar的兩點總結 1.getchar是以行為單位進行訪問的。當用getchar進行輸入時,如果輸入的第乙個字元為有效字元 即輸入是檔案結束符 eof,windows下為組合鍵 ctrl z,unix linux下為組合鍵 ctrl d 那麼只有當最後乙個輸入字元為換行符 n 也可以是檔案...