数学関数
数学的な計算が必要な場合に使用する命令セットです。引数と返りは全てdouble型になります。
主なもの:
- sin(x):角度x(ラジアン)のsinの値を返す
- cos(x):角度x(ラジアン)のcosの値を返す
- tan(x):角度x(ラジアン)のtanの値を返す
- pow(x,y):xのy乗の値を返す
- exp(x):指数関数eのx乗の値を返す
- log(x):xの自然対数の値を返す
- log10(x):xの常用対数の値を返す
- sqrt(x):xの平方根の値を返す
- ceil(x):小数第一位を切り捨てした値を返す
- floor(x):小数第一位を切り上げした値を返す
- round(x):小数第一位を四捨五入した値を返す
サンプル:
#include <stdio.h> #include <math.h> //math.hのインクルードを忘れずに int main(int argc, const char * argv[]) { // insert code here... double value = 0.5; printf("sin : %f\n", sin(value)); printf("sqrt : %f\n", sqrt(value)); printf("ceil : %d\n", (int)ceil(value)); printf("floor : %d\n", (int)floor(value)); return 0; }
文字列を数値型に変換する関数
文字列を数値型にするときに使われる関数がatoi関数(整数型に変換する場合)とatof関数(小数型に変換する場合)があります。
サンプル:
#include <stdio.h> #include <stdlib.h> //stdlib.hのインクルードを忘れずに int main(int argc, const char * argv[]) { // insert code here... char a[] = "20"; char b[] = "30"; printf("(cast) a + b = %d\n", (int)a + (int)b); printf("(atoi) a + b = %d\n", atoi(a) + atoi(b)); return 0; }
乱数を取得する関数
- rand() 関数 :乱数を得る (0 .. RAND_MAX)
- srand() 関数 : 乱数を生成するためのシードを設定する
サンプル:
サイコロの目1..6 をランダムに生成
#include <stdio.h> #include <stdlib.h> #include <time.h> //time関数を使うので int main(int argc, const char * argv[]) { // insert code here... int i; printf("///乱数の最大値 = %d///\n" , RAND_MAX); // 現在時刻を種に設定する srand((unsigned)time(NULL)); for(i = 0; i < 5; i++) { // 乱数を取得する int randValue; double randValue1; randValue = rand(); randValue1 = randValue / (double)(unsigned)(RAND_MAX + 1); printf("サイコロの目 : %d\n", (randValue % 6 + 1)); } return 0; }
練習問題:
========
0.0 .. 1.0 の数を6個ランダムに生成する
One thought on “C exercises (4) math and utility”