問題 1

6
1 問問 1 問問問問問問問問問 問問問問問問問問問問問問問問問問問問問 問問問問問問問問問問問問問問問問問 、、。 問問問int 問問問問問 double 問問問問問問問問問問問問問問問 問問問問問問問問問問問問問% ./a.out 問問問問問問問5.1234 問問問問問 0.1234 問問% double my_function(double); main() { double input, output; printf(“ 問問問問問問問); scanf(“%lf”, &input); output = my_function(input); printf(“ 問問問問問 %f 問問 \n”, output); } main 問問問問問問問問問問問 問問 my_function 問問問問問

Upload: petra-nichols

Post on 01-Jan-2016

15 views

Category:

Documents


0 download

DESCRIPTION

問題 1. 正の実数を受け取り、小数部分のみを取り出す関数を定義して、以下の動作をするプログラムを作れ。. ヒント: int 型の変数に double 型の値を代入すると小数点以下が 切り捨てられることを用いよ。. % ./a.out 正の実数を入力: 5.1234 小数部分は 0.1234 です。 %. main 文はすでに完成している。関数 my_function を完成せよ。. double my_function(double); main() { double input, output; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 問題  1

1

問題 1正の実数を受け取り、小数部分のみを取り出す関数を定義して、以下の動作をするプログラムを作れ。

ヒント: int 型の変数に double 型の値を代入すると小数点以下が切り捨てられることを用いよ。

% ./a.out正の実数を入力: 5.1234小数部分は 0.1234 です。%

double my_function(double);main(){ double input, output; printf(“ 正の実数を入力: ); scanf(“%lf”, &input); output = my_function(input); printf(“ 小数部分は %f です \n”, output);}

main 文はすでに完成している。関数 my_function を完成せよ。

Page 2: 問題  1

2

問題 2

成績( 100 点満点の整数値)を受け取り、秀、優、良、可、不可、を出力する関数を定義して、以下の動作をするプログラムを作れ。

% ./a.out成績を入力: 90貴方の成績は秀です。%

100~90 : 秀89 ~ 80 : 優79 ~ 70 : 良69 ~ 60 : 可59 ~ 0 : 不可

void hantei(int);main(){ int score;

printf(“ 成績を入力:” ); scanf(“%d”, &score); hantei(score);}

main 文の骨格はすでに完成している。関数 hantei を定義せよ。

関数 hantei は成績を引数として受け取り、上記の判定にしたがって、秀・優・良・可・不可を表示する。(返却値無し)

Page 3: 問題  1

3

問題 3

正の整数を受け取り、それが素数であれば 1 (int) を、素数でなければ 0 (int) を返却値として返す関数 prime を完成させよ。正の整数でなければ−1を返す様にする。

int prime(int);main(){ int i,r scanf(“%d”, &i); r = prime(i); if( r == 1 ) printf(“%d は素数です \n”, i); else if(r == 0) printf(“%d は素数ではない \n”, i); else printf(“%d は正の整数でありません。 \n”, i);}

main 文の骨格部分はすでにでき上がっている。

% ./a.out正の整数を入力: 1313 は素数です%

関数 prime は整数値の引数を受け取る。返却値は int 0 もしくは 1,-1 である。

Page 4: 問題  1

4

問題 4

正の整数 n を受け取り、 1以上 n 未満の n の約数の和を求める関数 int yakusuu(int n)を定義せよ。これを使って、友愛数を求めるプログラムを作成せよ。

int yakusuu(int);main(){ int i, j; for(i = 1; i < 100000; i++) { j = yakusuu(i); if (j > i && i == yakusuu(j)) printf(“ % d の友愛数は %d です \n”, i 、 j); }}

% ./a.out220 の友愛数は 284 です。1184  の友愛数は 1210 です。2620  の友愛数は 2924 です。5020  の友愛数は 5564 です。 ...%

2 つの自然数について、片方の約数(自分自身は除く)の和が、他方の約数(同じく自分自身は除く)の和に等しくなるとき、これら 2 つの自然数は友愛数の関係にあるという。

Page 5: 問題  1

5

問題 5

gnuplot 等の視覚化ツールを用いて次の関数をグラフに描け。

z = f(x, y) = cos(x2 + y2)/(1+x2+y2) –4 ≤ x ≤ 4, –4 ≤ y ≤ 4

2 次元平面上の点 (x, y) の高さが z = f(x, y) で与えられる 3 次元空間内の曲面。2 つの引き数をもつ関数を自分で定義して次の形式で出力する。

% ./a.out-4.000000 -4.000000 0.025279-4.000000 -3.900000 0.030390-4.000000 -3.800000 0.017824....

% ./a.out > data% gnuplot...gnuplot > splot "data"gnuplot > quit%

x, y, z の形式で出力(スペースで区切って出力)

リダイレクションで計算結果をファイルへ書き込む。

gnuplot からデータファイルを読み込み視覚化する。

Page 6: 問題  1

6

gnuplot によるグラフ描画gnuplot はグラフを描画するソフトで、二次元、三次元のグラフを描く事が出来る。% gnuplot

gnuplot > plot "data”gnuplot >splot “ data2”

gnuplot>set isosamples 100gnuplot>splot [-4:4][-4:4]cos(x*x+y*y)/(1+x*x+y*y)gnuplot > quit %

三次元グラフの描画

二次元グラフの描画

標本点の数を 100 に設定