網絡学習管理 速習C言語入門3 C exercises (4) math and utility

C exercises (4) math and utility

数学関数

数学的な計算が必要な場合に使用する命令セットです。引数と返りは全て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個ランダムに生成する

 

1 thought on “C exercises (4) math and utility”

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


Related Post

C exercises(5) AddressC exercises(5) Address

ポインタの仕組み:アドレスとは ポインタはC言語(および拡張言語)に特有の概念で、C言語を学び始めた初心者が必ずといっていいほどつまづく概念でもあります。ポインタがどうしても理解できないためにC言語に挫折してしまう方もいます。 アドレスの基本 コンピュータの記憶装置(メモリ)には、アドレスが付けられている。 変数のアドレス 変数のアドレスを取得するには変数名の前にアンパサンド “&”をつけます。 int a = 123; printf(“aのアドレス : %p\n”, &a); 配列のアドレス 配列の先頭をアドレスは、配列名だけで示します。要素のアドレスは&配列名[添字]で示します。 #include <stdio.h> int […]

C exercises (2) stdioC exercises (2) stdio

標準ライブラリ関数 : 標準入出力関数 標準入出力関数には(C言語プログラミング)で説明した printf() や scanf() の他にも 下のように 1文字専用の入出力関数と 1行専用の入出力関数が用意されている。 標準入力から文字入力 getchar 関数 標準出力から文字出力 putchar 関数 標準入力から文字列入力 gets 関数 […]

C exercises(9) Basics of FunctionC exercises(9) Basics of Function

関数の基本 C言語において関数を使うことには、以下のような利点があります。 関数化しておくとそれを1つのブラックボックスとして扱うことができます。 つまり、使用する側が知っておくべきことは、以下の通りです。 入力として、どのような引数を与えるか 出力として、関数がどんな値を返すのか 関数を使ったことによって、どんな副作用があるか 一度、関数として作成しておけば、後で何度でも再利用することができる 関数として各機能をまとめていくと、一般にプログラムが見やすく、デバッグの作業もしやすい 関数の呼び出し #include <stdio.h> void func();   //関数のプロトタイプ宣言 int main() { func();    //関数呼び出し printf(" ここがメイン関数内\n"); return 0; } void func()    //自作関数 { […]