網絡学習管理 速習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(8) Pointer SummaryC exercises(8) Pointer Summary

ポインタのまとめ アドレス ポインタと使用手順 ポインタ配列 過去のページを参照 演習 ポインタを使ったプログラムをグループで作成する。 7-3-4-3(P245) 大きさ10の整数型配列を用意し、下図のように初期設定しなさい。 この配列を順に調べ、奇数の値のみ、別の大きさ10の整数型配列に代入しなさい。 また、配列の中身と、何個格納したかを画面表示しなさい。 実行結果 15 45 9 71 37 格納個数 = 5 […]

C exercises(7) Pointer ArraysC exercises(7) Pointer Arrays

ポインタの配列 複数の文字列をchar型の2次元配列で宣言しました。それを下記に示します。 char kw[3][7] = {"double", "extern", "switch"}; 同様なものをポインタを使って宣言すると、下記のようにポインタの配列となります。 const static char *wday[ ] = { "Sunday", "Monday", "Tuesday", "Wednesday", […]

C exercises(d) Scope and Storage classC exercises(d) Scope and Storage class

変数の通用範囲 自動変数のことを局所変数、外部変数のことをグローバル変数(大域変数)ともいいます。 変数のスコープの範囲を図で表してみます。 赤色で囲った部分がグローバル変数の有効範囲です。 青色で囲った部分がローカル変数の有効範囲です。 この図ではローカル変数の寿命を関数内と説明しましたが、正確にはブロック内です。 ブロックとは、{}で囲まれている範囲のことを指しています。 記憶クラス Cで扱う記憶領域は一般に、プログラム領域、静的領域、スタック領域、ヒープ領域の 4つに大別されます。 記憶クラスには、4つあり、自動、静的、外部、レジスタがあります。 記憶クラス 記憶領域 スコープ 記憶クラス指定子 自動変数 スタック { } の内側 […]