c 學習筆記 03 從乙個小程式說起2

2022-08-14 20:45:21 字數 2584 閱讀 5490

從乙個小程式說起2

要求:編寫乙個程式,要求使用者輸入一串整數和任意數目的空格,這些整數必須位於同一行中,但允許出現在該行中的任何位置。當使用者按下鍵盤上的「enter」鍵時,資料輸入結束。程式自動對所有的整數進行求和並列印出結果。

c語言版本:

1 #include 2 #include 3

4void

main()523

24 ungetc( ch, stdin ); //

將變數ch 中存放的字元退回給stdin輸入流。25}

2627 printf("

結果是: %d

", sum);

28 printf("\n"

);29 system("

pause");

30 }

view code

c++語言版本:

1 #include 2

3using

namespace

std;45

intmain()620

if( cin.peek() == '\n'

)2124}

2526 cout << "

½á¹ûêç:

"<< sum <

2728

return0;

29 }

view code

這個程式使用了流物件 cin。這個物件的型別是istream,它知道如何從使用者終端讀取資料。

cin >> i;

cin 輸入操作符又稱為提取操作符,它一次從輸入流物件cin 提取乙個整數。

當使用者進行鍵盤輸入時,對應的字元將輸入到作業系統的鍵盤緩衝區中。

這樣,當使用者點選鍵盤上的「enter」鍵時,作業系統把鍵盤緩衝區的內容傳輸到cin 流的內部緩衝區,「>>」操作符隨後從這個緩衝區提取需要的資訊。

我們還發覺,如果使用者不進行鍵盤的輸入,程式將會阻塞。這是阻塞性(blocking)io的例子。

「>>」最初定義為右移操作符,它在c++ 中進行了過載,當它按照這裡所示的方式使用時,它就用於從輸入流物件提取資訊。

另外,這個操作符對所有內建的資料型別都進行了過載,所以它可以從輸入流物件提取出int, float, double 型資料,也可以提取字串等資料。

在while( cin >> i ) 中,表示式 cin >> i 返回輸入流物件本身,也就是cin。但是,如果到達了檔案尾或者提取操作符遇到乙個非法值,這個返回值將是 false。

我們小舉乙個例子:如果我們試圖把乙個浮點數讀取到乙個 int 型變數中,當提取操作符遇到小數點時,它將使輸入流物件置於乙個錯誤的狀態中,導致 cin 的值為 false。

注意,在while( cin >> i ) 中,當使用者在鍵盤上點選「enter」鍵的時候,在這一句並不會結束。

另外,觀察兩個程式,我們發現:c 和 c++事實上在宣告變數的事實上有點不同,c++允許我們在程式的任意位置宣告變數。

這大大的提高了大型c++ 程式的可讀性,因為這樣子我們就可以在實際需要使用變數的時候才來宣告他們。

前邊我們講過,cin 是 istream類的物件,那麼cin 同樣具有一些方法,這些方法可以增強對於輸入操作的控制,下邊我們將通過簡單的例子介紹 cin 的一些方法!

例子一:cin.ignore()和cin.getline()

1 #include 2

3using

namespace

std;45

intmain()

6

例子二:cin.get()和cin.peek()

1 #include 2

3using

namespace

std;45

intmain()

615 cout <

1617

return0;

18 }

例子三:cin.gcount()和cin.read()

1 #include 2

3using

namespace

std;45

intmain()

6

前邊我們已經介紹了幾種常用的 cin 物件的方法,下邊再介紹幾種關於 cout 物件的方法。同樣我們通過例項在讓大家快速認識!

例項一:cout.precision()

1 #include 2 #include 3

4using

namespace

std;56

intmain()717

18 cout << "

當前的輸出精度為:

"<< cout.precision() <

1920

return0;

21 }

例項二:cout.width()

1 #include 2

3using

namespace

std;45

intmain()619

20return0;

21 }

小甲魚 C 3 從乙個程式說起

www.fishc.com include 對乙個整型陣列求和 int addarray int array,int n int main int size sizeof data sizeof int int size sizeof data sizeof data 0 printf 結果是 d ...

C 學習筆記 004 從另乙個小程式說起

include include using namespace std 將乙個檔案複製到另乙個檔案 int file copy main char x while in x cout endl in.close return 0 將鍵盤輸入的資訊存入檔案 int str to file main f...

mybatis快取,從乙個「靈異」事件說起

talk is cheap.show me the code.該問題涉及的主要 實現包括 listlistgoodstrack param criteria goodstrackquerycriteria criteria 2.xml定義 select 3.service定義 service tra...