今回は,今までの知識を使った演習を行います.
まず前回の演習を用いてカウンタの概念を復習します.
問題:1から,入力した値 n までの和を求めるプログラムを作成せよ.
考え方:1から,入力した値 n まで数字を表示するプログラムを応用する.
#include <stdio.h>
void main()
{
int i, n;
printf("n=");
scanf("%d", &n);
i = 1; /* カウンターの値を1に */
while(i <= n) { /* カウンターの値が n 以下の場合,以下を繰り返す */
printf("%d¥n", i); /* 画面にカウンターの値を表示する */
i++; /* カウンターの値に1加える */
}
}
ここで,ループの回数を数えるカウンタは,1 から n まで変化する.
i |
1 |
2 |
... |
n |
別の変数 wa を用意し,ループで作成したカウンタを順番に加えていく.
i | wa |
1 | 1 |
2 | 1+2 |
... | ... |
n | 1+2+...+n |
#include <stdio.h>
void main()
{
int i, n, wa;
printf("n=");
scanf("%d", &n);
wa = 0; /* 和をあらかじめ 0 に */
i = 1; /* カウンターの値を1に */
while(i <= n) { /* カウンターの値が n 以下の場合,以下を繰り返す */
wa += i; /* wa = wa + i */
i++; /* カウンターの値に1加える */
}
printf("和は %d です¥n", wa); /* 結果を表示する */
}
(1) 1からnまでの階乗n!を求めるプログラムを作成せよ
(2) sin関数を用いて0°から180°までのsin関数の値を10°ずつ表示せよ
sin関数の使い方は,以下のプログラムを参考にすること
#include <stdio.h> /*printfなどの命令を使うためのファイルの読み込み*/
#include <math.h> /*sin関数など数学用の関数を使うためには必ず読み込むこと*/
void main()
{
double rad,pi; /*sin(double x)のため,変数xはdouble型で定義すること*/
double x;
pi=3.141; /*πの定義*/
rad = 10.0/180.0*pi; /*sin関数の引数は,ラジアン[rad]にすること*/
x=sin(rad);
printf("角度10°の時のsinの値は%1.3fです。¥n",x);
}
(3)以下の数列を計算するプログラムを作成せよ
ただし,乗数計算には以下のn乗計算用の関数が使える
#include <stdio.h> /*printfなどの命令を使うためのファイルの読み込み*/
#include <math.h> /*sin関数など数学用の関数を使うためには必ず読み込むこと*/
void main()
{
float x,y,n;
x = 2.0;
n = 4.0;
y=pow(x,n); /*乗数計算用の関数:xが乗数される値,nが乗数*/
printf("2の4乗は%.0fです.¥n",y);
}
上記の数列は無限大まで計算すると値がπ/4となる,実際に答えが近い値になっているかを確かめよ
n = 10000ぐらいの値を入力すると近い値がでる
(4)自然数nを入力し素数かどうかの判定をするプログラムを作成せよ
(5)以下の長方形則を用いて数値積分を実行するプログラムを作成せよ
数値積分は関数を解析的に解くのが困難な場合に,近似的に値を求める手法である
以下に基本的な数値積分手法である長方形則の概念と式を示す
長方形則の概念図
ここで,hは長方形の幅である.ab間を100に分割した時,h=0.01 ×(b-a)となる
今回は以下に示す式の計算せよ.ただしab間を400分割して計算すること
プログラムの値と,手計算で求めた値を比較せよ
授業終了時までのプログラムと完成した提出用プログラムをoh-meijiシステムを使って提出すること
授業終了時に送るのは出席の確認用である.完成した課題は提出用の回に送ること
(提出期限を厳守し,提出用の回に提出しないと採点を行わない)