物理情報処理基礎実習II 第4回

http://www.phys.ynu.ac.jp/labs/cosmic/shibata/jisshu/
物理情報処理基礎実習II
第4回
組込関数の使い方
~scanf関数・数学関数~
柴田 [email protected][email protected]
§scanf関数
scanf関数
標準入力=キーボード
標準出力=ディスプレイ
与えられた書式に従って、
変数の値を標準入力から読込む。
文法
scanf(“書式”, &変数の並び)
書式の書き方
整数型(int): %d
 単精度実数型(float): %f、%e、%g
 倍精度実数型(double): %lf、%le、%lg

キーボードから入力した整数をnに代入する。
int n;
scanf(“%d”, &n);
ex.)
§scanf関数 -例 I書式は変数の型に合わせること。
int i ;
float a ;
double x ;
scanf(“%d”, &i);
scanf(“%f”, &a);
scanf(“%lf”, &x);
2個目以降の引数にも&を付けるのを忘れずに。
printf(“Input i, a and x : ”);
scanf(“%d %f %lf”, &i, &a, &x);
※scanfでは何も画面出力はないのでprintfで書いている。
§関数一般について
関数の引数(argument)は、
変数の型が決まっている。
引数には 2種類があり、
変数の値だけが渡されるものと、
メモリアドレス(ポインタ)が渡されるものがある。
scanf関数の第2引数は、後者であり、
&変数名と記述する必要がある。
詳細は、後の関数の章で説明する。
§scanf関数 -例 II 整数iを入力するためのメッセージ「i=」を出力し、
scanf関数によりiの値をキーボードから入力し、
その結果を出力するプログラム。
1.
2.
3.
4.
5.
6.
7.
8.
#include <stdio.h>
main()
{
int i;
printf(“i = “);
scanf(“%d”, &i);
printf(“Input Data : i = %d \n”, i);
}
§数学組込関数 -I数学関数 関数名(引数の型のリスト)
 冪関数
pow(double, double)
 平方根 sqrt(double)
 絶対値 fabs(double)
 三角関数
sin(double)、cos(double)、tan(double)
 逆三角関数
asin(double)、acos(double)、atan(double)
 双曲線関数
sinh(double)、cosh(double)、tanh(double)
 逆双曲線関数
asinh(double)、acosh(double)、atanh(double)
 指数関数 exp(double)
 自然対数関数 log(double)
 常用対数関数 log10(double)
§数学組込関数 -II数学関数を使った場合の注意
プログラム作成時
math.hのincludeが必要。
#include <math.h>
コンパイル時
スイッチ -lm を付ける必要がある
cc ファイル名.c -o プログラム名 -lm
§数学組込関数 -III- 例
 プログラム例
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#include <stdio.h>
#include <math.h> ※数学関数用ヘッダ
main()
{
double x=1.5,y=2.0,z1,z2,z3;
printf(“x=%lf, y=%lf\n”,x,y);
z1=pow(x,y); ※ z1 = xy
z2=sqrt(y); ※ z2 = √y
z3=sin(x); ※xは、弧度法(radian)にすること
printf(“z1=%lf, z2=%lf, z3=%lf\n”,z1,z2,z3);
}
課題4 三角形の面積
三角形の2辺の長さa,bとその2辺がなす
角 x (度単位)をキー入力して三角形の
面積を少数点以下10桁で求めるプログラム
を作成し、実行せよ。
(三角関数の引数はラジアンに変換する
必要がある。a=1, b=1, x=90 のときの答え
が0.5となることを確かめよ。)
小数点以下10桁で出力する方法
printf(“%15.10lf”,y);
※書式について268ページ