1 / 20

第二章

第二章. 基本的輸出與輸入. 大綱. 2.1 C++的輸出物件cout 2.2 cout 物件的格式化函式 2.2.1 欄位寬 設定- cout.width(n); setw( ); 2.2.2 精確度設定- cout.precision( ); setprecision( ) 2.2.3 進位制設定- dec, hex, oct 2.2.4 指定多餘格數字元- cout.fill( ); setfill( ) 2.2.5 小數位數設定- cout.setf( ) 2.3 C++的輸入物件cin. 2. 1 C++ 的輸出物件 cout.

cicada
Download Presentation

第二章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二章 基本的輸出與輸入

  2. 大綱 • 2.1 C++的輸出物件cout • 2.2 cout物件的格式化函式 • 2.2.1 欄位寬設定- cout.width(n);setw( ); • 2.2.2 精確度設定-cout.precision( ); setprecision( ) • 2.2.3 進位制設定-dec, hex, oct • 2.2.4 指定多餘格數字元-cout.fill( ); setfill( ) • 2.2.5 小數位數設定-cout.setf( ) • 2.3 C++的輸入物件cin

  3. 2.1 C++的輸出物件cout • cout(唸做c-out)是C++的一個物件(Object) 。 • cout物件是<iostream>提供的物件,所以必須先引入該標頭檔。(#include <iostream>)。cout物件只要配合『<<』運算子就可以使用,基本格式為: • cout << “字串”; • cout << 變數名稱; • cout << ‘字元’; • cout <<(運算式); • 或上述混合使用 • “<<”為一插入(Insert)導向符號,將右邊資料及其格式傳給物件cout。

  4. 2.1 C++的輸出物件cout //未設定輸出欄寬為向左對齊 #include <iostream> //cout using namespace std; void main( ) { int i=1; cout<<"i=" << i << endl; cout<<"i*10=" << i*10 << endl; cout<<"i*100=" << i*100 << endl; return 0; }

  5. 2.2 cout物件的格式化函式 • cout物件會自行判斷變數的資料型態,這當然帶來了很大的方便,但似乎卻喪失了轉換輸出入變數資料型態的彈性,其實,並不是這樣子的,因為,我們也可以藉由其他屬於cout物件的相關函式來設定格式化的各種條件。 • 欄位寬設定-cout.width(); setw() • 填充字原設定-cout.fill(); setfill(); • 進位制設定-dec, hex, oct • 精確度設定-cout.precision(); setprecision() • 小數位數設定-cout.setf(ios::fixed, ios::floatfield); • 科學記號輸出-cout.setf(ios::scientific, ios::floatfield);

  6. 2.2.1 欄位寬設定-cout.width(n);setw(n) • 欄位寬設定之兩個敘述為 cout.width(n); setw(n) 其中n為正整數,表寬為n 。 • 使用setw(n)需包含一標題檔 • #include <iomanip> • 兩者皆只對下一輸出之資料有作用且資料向右對齊。 • 參數n,若資料位數比n小則不足位數以空白取代,若資料位數大於n則資料直接輸出而不捨去 ,如: • cout.width(4); • cout << 23; //結果為 ^^23 ( ^ 表空白) • cout << setw(4) <<12345; // 結果為12345

  7. #include <iostream> //cout #include <iomanip> //setw( ) using namespace std; int main( ){ int i=1;   cout << setw(5) << i << endl; cout << setw(5) << i*10 << endl; cout << setw(5) << i*100 << endl; cout << i << endl; cout << i*10 << endl; cout.width(5); cout << i*100 << endl return 0; } 2.2.1 欄位寬設定-cout.width(n);setw(n)

  8. 2.2.2 指定多餘格數字元-cout.fill();setfill (); • 指定多餘格數字元之兩個敘述為 cout.fill( ); setfill( ); ( )內需以一字元取代 ,如: • cout.fill(‘#’);輸出以「#」代替空白。 • 使用setfill( );需包含一標題檔 • #include <iomanip> • 配合欄寬cout.width()及setw()使用。 • 影響所有輸出。

  9. #include <iostream> //cout #include <iomanip> //setw using namespace std; int main( ){ int i=1; cout.fill('#'); //設定填充字元為’#’ cout << setw(5) //設定輸出欄寬 << i << endl; cout << setw(5) << i*10 << endl;   cout << setw(5) << i*100 << endl; return 0; } 2.2.2 指定多餘格數字元-cout.fill( );setfill ( ); 執行結果: ####1 //前面有4個# ###10 //前面有3個# ##100 //前面有2個#

  10. 2.2.3 十六進制、八進制與十進制之輸出 • 十進制為: dec (decimal) • 0, 1, 2, 3, 4, …, 9 • 十六進制為: hex (hexadecimal) • 0, 1, 2, 3, 4, …, 9, a, b, c, d, e, f • 八進制為: oct (octal) • 0, 1, 2, 3, 4, …, 7 • 設定後影響全部

  11. 2.2.3 十六進制、八進制與十進制之輸出 #include <iostream> //cout #include <iomanip> //setw using namespace std; int main( ){ int i=1; const int f = 5; //常數設定 cout.fill(‘#’); //設定填充字元 cout << setw(f) << hex << i << endl; //輸出16進位 cout << setw(f) << i*10 << endl; //輸出16進位 cout << setw(f) << oct << i*100 << endl; //輸出8進位 cout << setw(f) << dec << i*100 << endl; //輸出10進位 return 0; } 執行結果: ####1 ####a ##144 ##100

  12. 2.2.4 精確度設定-setprecision() • 對於浮點數而言,C++內定的小數位數為6位(小數點也算一位),而setprecision(n)函式可以用來設定輸出的小數點位數。 • 格式為:setprecision(n); • 需包含一標題檔 • #include <iomanip> • 影響所有輸出。

  13. 2.2.4 精確度設定-cout.precision() • cout.precision與setprecision函式功能相同,也是設定輸出的小數點位數。設定之後將影響之後所有的cout物件的輸出格式。(不必載入<iomanip>) • 格式為:cout.precision(n); • 用於浮點數資料 • 精確度之有效位數為整數位數加小數位數,參數n代表精確位數。 • 如:11.156代表精確度為5位,不含小數點

  14. #include <iostream> //cout #include <iomanip> //setw using namespace std; int main( ){ const int f = 6; //設定輸出欄寬 float pi=3.14159; cout.fill(‘#’); cout << "有效精確度4位:\n"; cout.precision(4);//設定有效精確度 cout << setw(f) << pi << endl;   cout << setw(f) << pi/4 << endl;   cout << setw(f) << pi*10*10 << endl; return 0; } 2.2.4 精確度設定-cout.precision() 執行結果: 有效精確度4位: #3.142 0.7854 #314.2

  15. 2.2.5 設定浮點數之小數位數-cout.setf() • 以下兩敘述合用 • cout.setf (ios :: fixed, ios :: floatfield); • cout.precision(n); • fixed及floatfield皆定義在ios類別內。 • 使用需加上該類別名稱ios、範圍運算子(::)(Scope Resolution Operator)及成員。 • fixed: 固定小數位數n • floatfield: 浮點數欄位 • 若要恢復正常設定: cout.unsetf (ios :: floatfield);

  16. #include <iostream> //cout #include <iomanip> //setw int main( ){ const int f=6; //設定輸出欄寬 float pi=3.14159; cout.fill(‘#’); cout << “小數位數2位,欄寬” << f << " 含小數點" << endl; cout.setf(ios::fixed, ios::floatfield);//定點小數 cout.precision(2);//設定小數位數2位 cout << setw(f) << pi << endl;   cout << setw(f) << pi/4 << endl; cout<<setw(f)<< pi*10*10<<endl; return 0; } 2.2.5 設定浮點數之小數位數-cout.setf() • 執行結果: 小數位數2位,欄寬6 含小數點 ##3.14 ##0.78 314.16

  17. 2.2.6 科學記號輸出-cout.setf() • 科學記號輸出-cout.setf(ios::scientific, ios::floatfield); • 科學記號輸出固定小數位數- cout.setf(ios::scientific, ios::floatfield); cout.precision(n); • 恢復無科學記號輸出-cout.unsetf(ios::floatfield);

  18. 2.3 C++的輸入物件cin • cin 唸[si’in] • 自鍵盤讀取資料 • 輸入之格式 • cin>>變數名稱>>變數名稱 … ; • 右向插入運算子”>>”乃cin自鍵盤取得資料,再將資料傳送給其後之變數 • 運算子”>>”之後除了變數外不得有其它數字、字串或字元符號,如: • cin >> “a=” >> a; //錯誤,含字串”a=” • cin >> ‘a’ >> a; //錯誤,含字元’a’

  19. 2.3 C++的輸入物件cin • cin後之變數可為任何資料型態 • 16進位輸入則數字前需冠以『0x』或『0X』,如0x3A或0X3A • 8進位輸入則數字前需冠以『0』,如0123 • 輸入科學記號,需加入『e』或『E』,如3e8或3E8 • 輸入之前應有一提示文字,如: • cout << “輸入兩整數:”; • cin >> a >> b;

  20. 本章習題 • 由鍵盤輸入圓半徑並輸出圓半徑與面積。(pi=3.14159) • 由鍵盤任意輸入5個整數,求總和與平均。 • 由鍵盤任意輸入1個整數,分別輸出其十進位,十六進位,八進位數。 • 撰寫一個程式分別輸入你的生日(yyyy年,mm月,dd日),並輸出。(輸出格式為mm/dd/yyyy) • 寫一程式利用欄位寬設定輸出一個用’*’堆成的等腰三角形。(最上層1個’*’,第二層3個’*’,第三層5個’*’, …, 最後一層11個’*’ )

More Related