前言
數學函數
C++ 內置了豐富的數學函數,可對各種數字進行運算。下表列出了 C++ 中一些有用的內置的數學函數。
為了利用這些函數,您需要引用數學頭文件 。
函數 | 描述 |
---|---|
double cos(double); | 該函數返回弧度角(double 型)(度數)的余弦。 |
double sin(double); | 該函數返回弧度角(double 型)(度數)的正弦。 |
double tan(double); | 該函數返回弧度角(double 型)(度數)的正切。 |
double log(double); | 該函數返回參數的自然對數。 |
double pow(double, double); | 假設第一個參數為 x,第二個參數為 y,則該函數返回 x 的 y 次方。 |
double hypot(double, double); | 該函數返回兩個參數的平方總和的平方根,也就是說,參數為一個直角三角形的兩個直角邊,函數會返回斜邊的長度。 |
double sqrt(double); | 該函數返回參數的平方根。 |
int abs(int); | 該函數返回整數的絕對值。 |
double fabs(double); | 該函數返回任意一個十進制數的絕對值。 |
double floor(double); | 該函數返回一個小於或等於傳入參數的最大整數。 |
隨機函數
在許多情況下,需要生成隨機數。關於隨機數生成器,有兩個相關的函數。一個是 rand(),該函數只返回一個偽隨機數。生成隨機數之前必須先調用 srand() 函數。
下面是一個關於生成隨機數的簡單實例。實例中使用了 time() 函數來獲取系統時間的秒數,通過調用 rand() 函數來生成隨機數:
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main ()
{
int i,j;
// 設置種子
srand( (unsigned)time( NULL ) );
/* 生成 10 個隨機數 */
for( i = 0; i < 10; i++ )
{
// 生成實際的隨機數
j= rand();
cout <<"隨機數: " << j << endl;
}
return 0;
}
當上面的代碼被編譯和執行時,它會產生下列結果:
隨機數: 1748144778
隨機數: 630873888
隨機數: 2134540646
隨機數: 219404170
隨機數: 902129458
隨機數: 920445370
隨機數: 1319072661
隨機數: 257938873
隨機數: 1256201101
隨機數: 58032298
setw()函數
在C++中,setw(int n)用來控制輸出間隔。
例如:
cout<<'s'<<setw(8)<<'a'<<endl;
則在屏幕顯示
s a
//s與a之間有7個空格,setw()只對其后面緊跟的輸出產生作用,如上例中,表示’a’共占8個位置,不足的用空格填充。若輸入的內容超過setw()設置的長度,則按實際長度輸出。
setw()默認填充的內容為空格,可以用setfill()配合使用設置其他字符填充。
如cout<<setfill('*')<<setw(5)<<'a'<<endl;
則輸出:****a //4個*和字符a共占5個位置。
所謂域寬,就是輸出的內容(數值或字符等等)需要占據多少個字符的位置,如果位置有空余則會自動補足。比如我們要設置域寬為2,那么當輸出一位數1的時候輸出的就是“ 1”,即在1前面加了一個空格。空格和數字1正好一共占用了兩個字符的位置。如果你C++學的不好,可以去拿我的C++最新精講教程點我進裙自行獲取,
我們在設置域寬和填充字符的時候要注意幾點:
①設置域寬的時候應該填入整數,設置填充字符的時候應該填入字符。
②我們可以對一個要輸出的內容同時設置域寬和填充字符,但是設置好的屬性僅對下一個輸出的內容有效,之后的輸出要再次設置。即cout <<setw(2) <<a <<b;語句中域寬設置僅對a有效,對b無效。
③setw和setfill被稱為輸出控制符,使用時需要在程序開頭寫上#include “iomanip.h”,否則無法使用。
實例
#include <iostream>
using namespace std;
#include <iomanip>
using std::setw;
int main ()
{
int n[ 10 ]; // n 是一個包含 10 個整數的數組
// 初始化數組元素
for ( int i = 0; i < 10; i++ )
{
n[ i ] = i + 100; // 設置元素 i 為 i + 100
}
cout << "Element" << setw( 13 ) << "Value" << endl;
// 輸出數組中每個元素的值
for ( int j = 0; j < 10; j++ )
{
cout << setw( 7 )<< j << setw( 13 ) << n[ j ] << endl;
}
return 0;
}
上面的程序使用了 setw() 函數來格式化輸出。當上面的代碼被編譯和執行時,它會產生下列結果:
Element Value
0 100
1 101
2 102
3 103
4 104
5 105
6 106
7 107
8 108
9 109