1. 程式人生 > >課課通第2單元第1課-COUT語句

課課通第2單元第1課-COUT語句

實踐鞏固

1.寫出程式的執行結果

#include<iostream>
using namespace std;
int main(){
    int a,b,c,d,ans;
    a = 2; b = 3; c = 4;
    d = a - b;    //2-3=-1
    a = d + c;    //-1+4=3
    ans = a * b;    //3*3=9
    cout << "Ans = " << ans << endl;
    return 0;
}

結果:Ans = 9

__________________________________________________________

2.體會實數的輸出格式

#include<iostream>
#include<iomanip>       //格式函式的標頭檔案
using namespace std;
int main(){
    cout << 10.0 / 6.0 << endl;
    cout << fixed << setprecision(8) << 10.0 / 6.0 << endl;
    return 0;
}

輸出:

1.66667

1.66666667

為什麼是1.66667呢,在C++中float能夠精確到小數點後6位,並且四捨五入。這裡涉及float的儲存。

十進位制中的9,在二進位制中的表示形式是1001,這裡也就告訴我們,表示十進位制中的一位數在二進位制中需要4bit,所以我們現在float中具有24bit的精度,所以float在十進位制中具有24/4=6,所以在十進位制裡,float能夠精確到小數點後6位。同理,具有53bit精度的double型別能夠精確到小數點後13位。

fixed    以普通小數形式輸出浮點數
setprecision(n)    設定輸出浮點數的精度為 n。

在使用非 fixed 且非 scientific 方式輸出的情況下,n 即為有效數字最多的位數,如果有效數字位數超過 n,則小數部分四舍五人,或自動變為科學計 數法輸出並保留一共 n 位有效數字.

在使用 fixed 方式和 scientific 方式輸出的情況下,n 是小數點後面應保留的位

3.體會把整數以不同進位制的形式輸出

#include<iostream>
#include<iomanip>
using namespace std;
int main(){
  int a;
  cin >> a;
  cout << "dec:" << dec << a << endl; //以十進位制形式輸出整數
  cout << "hex:" << hex << a << endl; //以十六進位制形式輸出整數
  cout << "oct:" << setbase(8) << a << endl; //以八進位制形式輸出整數
  return 0;
}

輸入:17

輸出:

dec:17

hex:11

oct:21

ios::dec 以10進製表示整數
ios::hex 以16進製表示整數
ios::oct 以8進製表示整數
ios::showbase 為整數新增一個表示其進位制的字首
ios::internal 在符號位和數值的中間插入需要數量的填充字元以使串兩端對齊
ios::left 在串的末尾插入填充字元以使串居左對齊
ios::right 在串的前面插入填充字元以使串居右對齊
ios::boolalpha 將bool型別的值以true或flase表示,而不是1或0
ios::fixed 將符點數按照普通定點格式處理(非科學計數法)
ios::scientific 將符點數按照科學計數法處理(帶指數域)
ios::showpoint 在浮點數表示的小數中強制插入小數點(預設情況是浮點數表示的整數不顯示小數點)
ios::showpos 強制在正數前新增+號
ios::skipws 忽略前導的空格(主要用於輸入流,如cin)
ios::unitbuf 在插入(每次輸出)操作後清空快取
ios::uppercase 強制大寫字母

以上每一種格式都佔用獨立的一位,因此可以用“|”(位或)運算子組合使用。呼叫setf/unsetf或flags設定格式一般按如下方式進行:

cout.setf(ios::right | ios::hex); //設定16進位制右對齊
cout.setf(ios::right, ios::adjustfield); //取消其它對齊,設定為右對齊

預設包含的標頭檔案均為:

#include <iomanip>
#include <iostream>