3つの繰り返し文を使った1〜1000までの和を計算するプログラムを,リスト
1-に示す.
1 #include <stdio.h>
2
3 int main(void){
4 int i, sum;
5
6 sum=0;
7 i=1;
8
9 while(i<=1000){
10 sum += i;
11 i++;
12 }
13
14 printf("1から1000までの和は,%dです.\n", sum);
15
16 return 0;
17 }
1 #include <stdio.h>
2
3 int main(void){
4 int i, sum;
5
6 sum=0;
7
8 for(i=1; i<=1000; i++){
9 sum += i;
10 }
11
12 printf("1から1000までの和は,%dです.\n", sum);
13
14 return 0;
15 }
1 #include <stdio.h>
2
3 int main(void){
4 int i, sum;
5
6 sum=0;
7 i=1;
8
9 do{
10 sum += i;
11 i++;
12 }while(i<=1000);
13
14 printf("1から1000までの和は,%dです.\n", sum);
15
16 return 0;
17 }
リスト4は,関数
|
|
|
|
|
(1) |
の最大値を計算するプログラムである.計算のステップ幅--計算精度を表す-- は,
としている.すなわち,
|
(2) |
との値を変化させて,関数の値を計算している.
1 #include <stdio.h>
2 #include <math.h>
3
4 int main(void){
5 double xmin, xmax, x, dx, fx;
6 double max_fx, max_x; // 最大を格納する変数
7 int i, ncal;
8
9 xmin = -1000.0; // xの最小値
10 xmax = 1000.0; // xの最大値
11 dx = 0.0001; // xの計算のきざみ幅(誤差の程度)
12 ncal = (xmax-xmin)/dx; // 計算回数
13
14 //--- 暫定最大 ( x=xmin を暫定最大とする) ---------
15 x = xmin;
16 max_x = x;
17 max_fx = -5.0*x*x + 6.0*x + 6*sin(x);
18
19 for(i=1; i<=ncal; i++){
20 x = xmin + i*dx; // xの計算
21 fx = -5.0*x*x + 6.0*x + 6*sin(x); // f(x)の計算
22
23 //---- 最大値か否かの検査 --------------
24 if(max_fx < fx){ // 新たに最大値発見
25 max_fx = fx;
26 max_x = x;
27 }
28
29 }
30
31 printf("x = %fのときf(x)=%fで最大です\n", max_x, max_fx);
32
33 return 0;
34 }
リスト5は,基礎数学の教科書p.62の練習問題2-Aの2.(2)の連立不等
式
|
|
|
|
|
(3) |
を計算するプログラムである.計算のステップ幅--計算精度を表す--
は,としている.
1 #include <stdio.h>
2
3 int main(void){
4 double xmin, xmax, x, dx;
5 int period , current;
6 int i, ncal;
7
8 xmin = -1000.0; // xの最小値
9 xmax = 1000.0; // xの最大値
10 dx = 0.0001; // xの計算のきざみ幅(誤差の程度)
11 ncal = (xmax-xmin)/dx; // 計算回数
12
13 printf("連立不等式が成立するのは以下の範囲です\n");
14
15 period = 0;
16
17 for(i=1; i<=ncal; i++){
18 x = xmin + i*dx; // 検査する x
19
20 // --- 連立不等式が OK or NG の検査 ----
21 if(x*x-2*x-3 <= 0 && 3*x+2 < 4*x){
22 current = 1; // OKの場合
23 }else{
24 current = 0; // NGの場合
25 }
26
27 // --- OK と NG の境界の処理 ----
28 if(current != period){
29 if(current == 1){
30 printf("%f\tから\t", x);
31 period = current;
32 }else{
33 printf("%f\n", x);
34 period = current;
35 }
36 }
37 }
38
39 return 0;
40 }
ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成18年10月2日