32
3 3 數數數數 數數數數 3.1 3.1 鍵鍵鍵鍵 鍵鍵鍵鍵 3-2 3-2 3.1.1 3.1.1 鍵鍵鍵鍵 鍵鍵鍵鍵 cin cin 3-2 3-2 3.1.2 3.1.2 鍵鍵鍵鍵 鍵鍵鍵鍵 cin cin 3-2 3-2 3.2 3.2 鍵鍵鍵鍵鍵 鍵鍵鍵鍵鍵 3-3 3-3 3.2.1 3.2.1 鍵鍵鍵鍵鍵鍵 鍵鍵鍵鍵鍵鍵 setw 3-4 setw 3-4 3.2.2 3.2.2 鍵鍵鍵鍵鍵鍵 鍵鍵鍵鍵鍵鍵 setprecisi setprecisi on 3-6 on 3-6 3.2.3 3.2.3 鍵鍵鍵鍵鍵鍵 鍵鍵鍵鍵鍵鍵 setiosflag setiosflag s 3-7 s 3-7 3.3 3.3 鍵鍵鍵鍵鍵 鍵鍵鍵鍵鍵 3-11 3-11 3.3.1 3.3.1 鍵鍵鍵鍵鍵鍵 鍵鍵鍵鍵鍵鍵 setw 3-11 setw 3-11 3.3.2 3.3.2 cin cin 鍵鍵鍵鍵 鍵鍵鍵鍵 3-12 3-12 3.4 3.4 鍵鍵鍵鍵 鍵鍵鍵鍵 3-16 3-16 3.4.1 3.4.1 鍵鍵鍵鍵鍵鍵 鍵鍵鍵鍵鍵鍵 3-17 3-17 3.4.2 3.4.2 鍵鍵鍵鍵鍵鍵鍵 鍵鍵鍵鍵鍵鍵鍵 3-19 3-19 3.4.3 3.4.3 鍵鍵鍵鍵鍵鍵 鍵鍵鍵鍵鍵鍵 3-20 3-20 3.5 3.5 鍵鍵鍵鍵 鍵鍵鍵鍵 3-24 3-24 3.5.1 3.5.1 鍵鍵 鍵鍵 3-24 3-24 3.5.2 3.5.2 鍵鍵鍵鍵 鍵鍵鍵鍵 3-25 3-25 3.5.3 3.5.3 鍵鍵鍵鍵 鍵鍵鍵鍵 3-25 3-25 3.6 3.6 鍵鍵鍵鍵 鍵鍵鍵鍵 3-27 3-27 3.6.1 3.6.1 鍵鍵鍵鍵 鍵鍵鍵鍵 3-27 3-27 3.6.2 3.6.2 鍵鍵鍵鍵 鍵鍵鍵鍵 3-32 3-32 3.6.3 3.6.3 鍵鍵鍵鍵鍵 鍵鍵鍵鍵鍵 3-34 3-34 3.6.4 3.6.4 鍵鍵鍵鍵鍵 鍵鍵鍵鍵鍵 3-35 3-35 3.6.5 3.6.5 鍵鍵鍵鍵鍵鍵鍵鍵鍵 鍵鍵鍵鍵鍵鍵鍵鍵鍵 3-36 3-36 3.6.6 3.6.6 鍵鍵鍵鍵 鍵鍵鍵鍵 3-37 3-37

3 數 學運算

Embed Size (px)

DESCRIPTION

3.1 鍵盤輸入 3-2 3.1.1 輸入函數 cin3-2 3.1.2 多重輸入 cin3-2 3.2 輸出格式化 3-3 3.2.1 設定輸出長度 setw 3-4 3.2.2 設定有效數字 setprecision 3-6 3.2.3 設定輸出旗號 setiosflags 3-7 3.3 輸入格式化 3-11 3.3.1 設定輸入長度 setw 3-11 3.3.2cin 成員函數 3-12 3.4 算術運算 3-16 3.4.1 算術運算符號 3-17. 3.4.2 上限與下限溢位 3-19 - PowerPoint PPT Presentation

Citation preview

Page 1: 3   數 學運算

3 3 數學運算數學運算 3.13.1 鍵盤輸入鍵盤輸入 3-23-2 3.1.13.1.1 輸入函數輸入函數 cincin 3-23-2 3.1.23.1.2 多重輸入多重輸入 cincin 3-23-2 3.23.2 輸出格式化輸出格式化 3-33-3 3.2.13.2.1 設定輸出長度設定輸出長度 setw 3-setw 3-

44 3.2.23.2.2 設定有效數字設定有效數字 setprecisetpreci

sion 3-6sion 3-6 3.2.33.2.3 設定輸出旗號設定輸出旗號 setiosflsetiosfl

ags 3-7ags 3-7 3.33.3 輸入格式化輸入格式化 3-113-11 3.3.13.3.1 設定輸入長度設定輸入長度 setw 3-setw 3-

1111 3.3.23.3.2 cincin 成員函數成員函數 3-123-12 3.43.4 算術運算算術運算 3-163-16 3.4.13.4.1 算術運算符號算術運算符號 3-173-17

3.4.23.4.2 上限與下限溢位上限與下限溢位 3-193-19 3.4.33.4.3 轉換資料型態轉換資料型態 3-203-20 3.53.5 指定運算指定運算 3-243-24 3.5.13.5.1 單一指定單一指定 3-243-24 3.5.23.5.2 多重指定多重指定 3-253-25 3.5.33.5.3 混合指定混合指定 3-253-25 3.63.6 數值函數數值函數 3-273-27 3.6.13.6.1 亂數函數亂數函數 3-273-27 3.6.23.6.2 三角函數三角函數 3-323-32 3.6.33.6.3 指數與對數指數與對數 3-343-34 3.6.43.6.4 冪次與開方冪次與開方 3-353-35 3.6.53.6.5 小數進位與切除小數 小數進位與切除小數

3-363-36 3.6.63.6.6 取絕對值取絕對值 3-373-37

Page 2: 3   數 學運算

3.1 3.1 鍵盤輸入鍵盤輸入 標準輸入元件是鍵盤,所以本節將介紹如標準輸入元件是鍵盤,所以本節將介紹如

何在何在 DOSDOS 系統下,使用系統下,使用 cincin 函數讀取鍵盤函數讀取鍵盤輸入的字元與字串。 輸入的字元與字串。

Page 3: 3   數 學運算

3.1.1 3.1.1 輸入函數輸入函數 cincin #include <iostream>#include <iostream> cin >> cin >> 變數變數 ;;

範例範例int length;int length; //// 宣告整數變數宣告整數變數 lengtlengthhcin >> length;cin >> length; //// 將輸入資料存入將輸入資料存入 lenlengthgth

Page 4: 3   數 學運算

3.1.2 3.1.2 多重輸入多重輸入 cincin #include <iostream>#include <iostream> cin >> cin >> 變數變數 1 >> 1 >> 變數變數 2 >> . . . >> 2 >> . . . >> 變數變數 n;n;

範例範例int width, height;int width, height; //// 宣告變數宣告變數 widthwidth 與與 heigheighthtcin >> width >> height;cin >> width >> height;

//// 分別存入分別存入 widthwidth 與與 heigheightht

Page 5: 3   數 學運算

3.2 3.2 輸出格式化輸出格式化 3.2.1 3.2.1 設定輸出長度設定輸出長度 setwsetw 3.2.2 3.2.2 設定有效數字設定有效數字 setprecisionsetprecision 3.2.3 3.2.3 設定輸出旗號設定輸出旗號 setiosflagssetiosflags 3.2.4 cout3.2.4 cout 成員函數成員函數

Page 6: 3   數 學運算

3.2.1 3.2.1 設定輸出長度設定輸出長度 setwsetw #include <iomanip>#include <iomanip> setw(setw( 指定長度指定長度 ))

範例範例int number = 25;int number = 25;cout << '(' << number << ")\n";cout << '(' << number << ")\n"; //// 輸出輸出 (25)(25)cout << '(' << setw(3) << number << ")\n";cout << '(' << setw(3) << number << ")\n";

//// 輸出輸出 ( 25)( 25)cout << '(' << setw(5) << number << ")\n";cout << '(' << setw(5) << number << ")\n";

//// 輸出輸出 ( 25)( 25)

Page 7: 3   數 學運算

3.2.2 3.2.2 設定有效數字設定有效數字 setprecisisetprecisionon

#include <iomanip>#include <iomanip> setprecision(setprecision( 有效位數有效位數 ))

範例範例const double PI = 3.141592653;const double PI = 3.141592653;cout << setprecision(10) << PI << endl; cout << setprecision(10) << PI << endl;

//// 輸出輸出 3.1415926533.141592653 十位十位cout << setprecision(8) << PI << endl; cout << setprecision(8) << PI << endl;

//// 輸出輸出 3.14159273.1415927 八位有八位有效效cout << setprecision(6) << PI << endl; cout << setprecision(6) << PI << endl;

//// 輸出輸出 3.141593.14159 六位有效六位有效

Page 8: 3   數 學運算

3.2.3 3.2.3 設定輸出旗號設定輸出旗號 setiosflagsetiosflagss

#include <iomanip>#include <iomanip> setiosflags(ios::setiosflags(ios:: 格式旗號格式旗號 ););

範例範例float number = 35.7float number = 35.7cout << setprecision(4) << number; //cout << setprecision(4) << number; // 顯示顯示 35.735.7cout << setiosflags(ios::fixed) cout << setiosflags(ios::fixed)

<< setprecision(2) << number; << setprecision(2) << number; //// 顯示顯示 35.735.7cout << setiosflags(ios::fixed|ios::showpoint) cout << setiosflags(ios::fixed|ios::showpoint)

<< setprecision(2) << number;<< setprecision(2) << number; //// 顯示顯示 35.7035.70

Page 9: 3   數 學運算

3.3 3.3 輸入格式化輸入格式化 3.3.1 3.3.1 設定輸入長度設定輸入長度 setwsetw 3.3.2 cin3.3.2 cin 成員函數成員函數

Page 10: 3   數 學運算

3.3.1 3.3.1 設定輸入長度設定輸入長度 setwsetw #include <iomanip>#include <iomanip> setw(setw( 指定長度指定長度 ))

範例範例char string[4];char string[4]; //// 宣告字串變數宣告字串變數 strinstringgcin >> setw(4) >> string;cin >> setw(4) >> string;

//// 設定輸入字數並取得輸入設定輸入字數並取得輸入

Page 11: 3   數 學運算

3.3.2 cin3.3.2 cin 成員函數成員函數 cin.width(cin.width( 欄位寬度欄位寬度 ))

cin.width(5);cin.width(5); //// 相當於相當於 cin >> setwcin >> setw(5);(5);

cin.getline(cin.getline( 變數變數 , , 長度長度 , '\n'), '\n')char sentence[81];char sentence[81]; //// 宣告字串變數宣告字串變數cin.getline(sentence, 81, ‘n’);cin.getline(sentence, 81, ‘n’); //// 取得包含空白句子取得包含空白句子

cin.get(cin.get( 字元變數字元變數 ))char key;char key; //// 宣告字元變數宣告字元變數 keykeycin.get(key);cin.get(key); //// 取得鍵盤按鍵取得鍵盤按鍵

cin.ignore(cin.ignore( 長度長度 ))cin >> num;cin >> num; //// 讀取數值並存入讀取數值並存入 numnumcin.ignore();cin.ignore(); //// 忽略前一輸入字元忽略前一輸入字元EnterEntercin.get(key);cin.get(key); //// 取得鍵盤按鍵取得鍵盤按鍵

Page 12: 3   數 學運算

3.4 3.4 算術運算算術運算 C++ C++ 的數學運算式(的數學運算式( mathematical expmathematical exp

ressionsressions ))與一般數學運算式相容,它代與一般數學運算式相容,它代表一個數值的敘述 。表一個數值的敘述 。

範例範例int a = 5, b = 3, c = 6;int a = 5, b = 3, c = 6;int x = 3 * a + 2 * b + c;int x = 3 * a + 2 * b + c;

Page 13: 3   數 學運算

3.4.1 3.4.1 算術運算符號算術運算符號符號符號 功能功能 C++ C++ 運算式運算式 數學運算式數學運算式-x -x 負號負號 a = -x a = -x a = -5 a = -5

+x +x 正號正號 a = +x a = +x a = +5 a = +5

** 乘號乘號 a = x * y a = x * y a = 5 a = 5 3 3

// 除號除號 a = x / y a = x / y a = 5 / 3 a = 5 / 3

%% 餘數餘數 a = x % y a = x % y a = 5 / 3 a = 5 / 3 的餘數 的餘數 ++ 加號加號 a = x + y a = x + y a = 5 + 3 a = 5 + 3

-- 減號減號 a = x - ya = x - y a = 5 - 3 a = 5 - 3

Page 14: 3   數 學運算

3.4.2 3.4.2 上限與下限溢位上限與下限溢位 上限溢位(上限溢位( overflowsoverflows ))就是指定一個較大就是指定一個較大

型態的資料給一個較小型態的變數。型態的資料給一個較小型態的變數。

範例範例short n1 = 32767;short n1 = 32767; //n1=0x7fff//n1=0x7fffn1 = n + 1;n1 = n + 1; //n1=0x8000=-32768//n1=0x8000=-32768 溢位溢位unsigned short n2 = 65535;unsigned short n2 = 65535; //n2=0xffff//n2=0xffffn2 = n2 + 1;n2 = n2 + 1; //n2=0x0000=0//n2=0x0000=0 上限溢位上限溢位

Page 15: 3   數 學運算

3.4.2 3.4.2 上限與下限溢位 上限與下限溢位 (( 續續 )) 下限溢位(下限溢位( underflowsunderflows ))也是指定一個較也是指定一個較

大型態的資料給一個較小型態的變數。大型態的資料給一個較小型態的變數。

範例範例short n3 = -32768;short n3 = -32768; //n3=0x8000//n3=0x8000n3 = n3 - 1;n3 = n3 - 1; //n3=0x7fff=32767//n3=0x7fff=32767 溢溢位位unsigned short n4 = 0;unsigned short n4 = 0; //n4=0x0000//n4=0x0000n4 = n4 - 1;n4 = n4 - 1; //n4=0xffff=65536//n4=0xffff=65536 溢位溢位

Page 16: 3   數 學運算

3.4.3 3.4.3 轉換資料型態轉換資料型態 指定型態指定型態 (( 資料資料 || 變數變數 ))

由小轉大由小轉大 範例一範例一

int n;int n;short n1 = 32767;short n1 = 32767; //n1=32767//n1=32767n = int(n1 + 1);n = int(n1 + 1); //n=32767+1=32768//n=32767+1=32768

範例二範例二int n;int n;unsigned short n2 = 65535;unsigned short n2 = 65535; //n2=65535//n2=65535n = int(n2 + 1);n = int(n2 + 1); //n=65535+1=65536//n=65535+1=65536

Page 17: 3   數 學運算

3.4.3 3.4.3 轉換資料型態 轉換資料型態 (( 續續 )) 範例三範例三

int n;int n;short n3 = -32768;short n3 = -32768; //n3=-32768//n3=-32768n = int(n3 - 1);n = int(n3 - 1); //n=-32768-1=-32769//n=-32768-1=-32769

範例四範例四int n;int n;unsigned short n4 = 0;unsigned short n4 = 0; //n4=0//n4=0n = int(n4 - 1);n = int(n4 - 1); //n=0-1=-1//n=0-1=-1

範例五範例五int a=5;int a=5;int b=3;int b=3;float c = (float(a) / float(b));float c = (float(a) / float(b));

Page 18: 3   數 學運算

3.4.3 3.4.3 轉換資料型態 轉換資料型態 (( 續續 )) 由大轉小由大轉小 範例一範例一

int intVar = 65500;int intVar = 65500; //intVar=65500//intVar=65500signed short shortVar = short(intVar);signed short shortVar = short(intVar); //shortVar=-3//shortVar=-366

範例二範例二short shortLet = 65;short shortLet = 65; //shortLet=65//shortLet=65char charLet = char(shortLet);char charLet = char(shortLet); //charLet='A'//charLet='A'

範例三範例三float floatNum = 70000.0f;float floatNum = 70000.0f; //floatNum=70 //floatNum=70000.0000.0int intNum = int(floatNum);int intNum = int(floatNum); //intNum=70000//intNum=70000short shortNum = short(floatNum);short shortNum = short(floatNum); //shortNum=4464//shortNum=4464

Page 19: 3   數 學運算

3.5 3.5 指定運算指定運算 指定運算符號(指定運算符號( assignment operatorassignment operator

ss ))包括包括 單一指定運算符號(單一指定運算符號( == )) 多重指定運算符號多重指定運算符號 混合運算符號(混合運算符號( +=+= 、、 -=-= 、、 *=*= 、、 /=/= 、、 %=%= ) )

Page 20: 3   數 學運算

3.5.1 3.5.1 單一指定 單一指定 資料型態資料型態 變數名稱變數名稱 1, 1, 變數名稱變數名稱 2, …2, … 變數名稱變數名稱 1 = 1 = 初值初值 , , 變數名稱變數名稱 2 = 2 = 初值初值 , …, …

short shortVar;short shortVar; //// 宣告短整數變數宣告短整數變數 shortVarshortVarshortVar = 5;shortVar = 5; //shortVar//shortVar 的初值等於的初值等於 55..shortVar = 10;shortVar = 10; //// 改變改變 shortVarshortVar 的值為的值為 1010

資料型態資料型態 變數名稱變數名稱 1 = 1 = 初值初值 , , 變數名稱變數名稱 2 = 2 = 初值初值 ,, … …short shortVar = 5;short shortVar = 5; //shortVar//shortVar 的初值等於的初值等於 55

Page 21: 3   數 學運算

3.5.2 3.5.2 多重指定 多重指定 變數名稱變數名稱 1 = 1 = 變數名稱變數名稱 2 … = 2 … = 初值初值 ;; 範例一範例一

int a, b, c, d;int a, b, c, d; // // 宣告整數變數宣告整數變數 a, b, c, da, b, c, da = b = c = d = 10;a = b = c = d = 10; //// 令令 a=b=c=d=10a=b=c=d=10

範例二範例二const int VALUE = 100;const int VALUE = 100; //// 宣告常數符號宣告常數符號int var1, var2, var3;int var1, var2, var3; //// 宣告變數宣告變數var1 = var2 = var3 = VALUE; //var1 = var2 = var3 = VALUE; // 令多個變數令多個變數 =100=100

Page 22: 3   數 學運算

3.5.3 3.5.3 混合指定混合指定 變數名稱 變數名稱 op= op= 資料資料 ;;

範例範例a = a + 10;a = a + 10; //a+10//a+10 存回存回 aaa += 10;a += 10; //a+10//a+10 存回存回 aa

Page 23: 3   數 學運算

3.6 3.6 數值函數數值函數 C++ C++ 語言提供一些常用的數學函數(語言提供一些常用的數學函數( matmat

hematical functionshematical functions ),如三角函數、指),如三角函數、指數與對數函數、冪次與開方函數、取整數數與對數函數、冪次與開方函數、取整數函數、取絕對值函數、還有產生亂數函數函數、取絕對值函數、還有產生亂數函數等等。等等。

這些數學函數包含於這些數學函數包含於 cmathcmath 標題檔中,亂標題檔中,亂數函數則包含於數函數則包含於 cstdlibcstdlib 標題檔中,所以使標題檔中,所以使用這些函數之前必須先插入包含該函數的用這些函數之前必須先插入包含該函數的標題檔到使用者程式的前置處理區。 標題檔到使用者程式的前置處理區。

Page 24: 3   數 學運算

3.6.1 3.6.1 亂數函數亂數函數 產生固定亂數產生固定亂數 #include <cstdlib>#include <cstdlib> int rand(void)int rand(void)

範例範例cout << rand() << endl;cout << rand() << endl; //// 輸出亂數輸出亂數cout << rand() << endl;cout << rand() << endl; //// 輸出亂數輸出亂數cout << rand() << endl;cout << rand() << endl; //// 輸出亂數輸出亂數

Page 25: 3   數 學運算

3.6.1 3.6.1 亂數函數 亂數函數 (( 續續 )) 產生種子亂數產生種子亂數 #include <cstdlib>#include <cstdlib> void srand (unsigned void srand (unsigned 種子數種子數 )) 範例範例

unsigned seed;unsigned seed;cin >> seed;cin >> seed; //// 輸入種子數輸入種子數srand(seed);srand(seed); //// 設定亂數種子數設定亂數種子數cout << rand() << endl;cout << rand() << endl; //// 輸出亂數輸出亂數cout << rand() << endl;cout << rand() << endl; //// 輸出亂數輸出亂數cout << rand() << endl;cout << rand() << endl; //// 輸出亂數輸出亂數

Page 26: 3   數 學運算

3.6.1 3.6.1 亂數函數 亂數函數 (( 續續 )) 產生隨機亂數產生隨機亂數 #include <ctime>#include <ctime> time(*time(* 指標指標 ))

範例範例void srand (time(NULL));void srand (time(NULL));cout << rand() << endl;cout << rand() << endl; //// 輸出亂數輸出亂數cout << rand() << endl;cout << rand() << endl; //// 輸出亂數輸出亂數cout << rand() << endl;cout << rand() << endl; //// 輸出亂數輸出亂數

Page 27: 3   數 學運算

3.6.1 3.6.1 亂數函數 亂數函數 (( 續續 )) 調整亂數範圍調整亂數範圍 下限 下限 + rand() % (+ rand() % ( 上限 – 下限 上限 – 下限 + 1)+ 1)

範例範例int x, y;int x, y;x = 1 + rand() % (10 - 1 + 1);x = 1 + rand() % (10 - 1 + 1); //1~10//1~10 的整數的整數亂數亂數y = rand() % (99 + 1);y = rand() % (99 + 1); //0~99//0~99 的整數亂數的整數亂數

Page 28: 3   數 學運算

3.6.2 3.6.2 三角函數三角函數 #include <cmath>#include <cmath> double sin(double double sin(double 徑度徑度 )) double cos(double double cos(double 徑度徑度 )) double tan(double double tan(double 徑度徑度 ))

範例範例x = 30 * (3.14159 / 180);x = 30 * (3.14159 / 180); //x = 30//x = 30double a = sin(x); double a = sin(x); //a = sin(30//a = sin(30))double b = cos(x); double b = cos(x); //b = cos(30//b = cos(30))double c = tan(x); double c = tan(x); //c = tan(30//c = tan(30))

Page 29: 3   數 學運算

3.6.3 3.6.3 指數與對數指數與對數 #include <cmath>#include <cmath> double exp(double exp( 數值數值 )) double log(double log( 數值數值 )) double log10(double log10( 數值數值 ))

範例範例double a = log(2);double a = log(2); //a = ln(2)//a = ln(2)double b = log10(2);double b = log10(2); //b = log10(2)//b = log10(2)double c = exp(2); double c = exp(2); //c = e2//c = e2

Page 30: 3   數 學運算

3.6.4 3.6.4 冪次與開方冪次與開方 #include <cmath>#include <cmath> double pow(double pow( 底數底數 , , 冪次冪次 )) double sqrt(double sqrt( 數值數值 ))

範例範例double a = pow(2, 3);double a = pow(2, 3); //a=23//a=23double b = sqrt(3); double b = sqrt(3); //b=//b= 根根號號 33

Page 31: 3   數 學運算

3.6.5 3.6.5 小數進位與切除小數小數進位與切除小數 #include <cmath>#include <cmath> double ceil(double ceil( 數值數值 )) double floor(double floor( 數值數值 ))

範例範例int m1 = ceil(3.33)int m1 = ceil(3.33) //m1 = 4//m1 = 4int n1 = floor(3.33); int n1 = floor(3.33); //n1 = 3//n1 = 3int m2 = ceil(-3.33)int m2 = ceil(-3.33) //m2 = -3//m2 = -3int n2 = floor(-3.33); int n2 = floor(-3.33); //n2 = -4//n2 = -4

Page 32: 3   數 學運算

3.6.6 3.6.6 取絕對值取絕對值 #include <cmath>#include <cmath> double fabs (double fabs ( 數值數值 ))

範例範例int a = fabs(5.25);int a = fabs(5.25); //a = 5.25//a = 5.25int b = fabs(-3.75);int b = fabs(-3.75); //b = 3.75//b = 3.75