2 プログラム作成の練習

[練習1]
三角形の面積$ S$をヘロンの公式

  $\displaystyle s=\frac{a+b+c}{2}$ (1)
  $\displaystyle S=\sqrt{s(s-a)(s-b)(s-c)}$ (2)

を使って計算するプログラムを作成せよ.ここで、$ a,b,c$は辺の長 さである.プログラムの条件は以下の通りとする.
  • キーボードから、辺の長さを読み込む.
  • 面積の計算は、関数を使うこと.ただし、 $ (s-a)(s-b)(s-c)\le 0$の場合は、"三角形になりません"と 表示して、プログラムを止めること.
[練習2]
数学関数

  $\displaystyle f(x)=\frac{x+5}{x^2+5}-x^2-10x+15-20\sin(x)$   $\displaystyle -100 \leqq x \leqq 100$ (3)

の最大値を求めるプログラムを作成せよ.計算の精度は,$ 10^{-4}$ とする.ただし,この数学関数の計算にはC言語のユーザー定義関数を使うこと.
[練習3]
リスト12の2つのソースファイ ルから実行ファイルを作成する.以下の問に答えよ.
  • プログラムに使われている変数を(1)グローバル変数,(2)ローカル 変数,(3)ブロック内宣言の変数に分けよ.
  • プログラムに使われている変数を記憶クラス毎に分けよ.
  • プログラムの実行結果を示せ.

   1 #include <stdio.h>
   2 
   3 int hoge(int a, int b);
   4 void fuga(int b);
   5 
   6 int a=2, i, j=3;
   7 extern int k;
   8 
   9 //============== main 関数 ============================
  10 int main(void)
  11 {
  12 
  13   int a=6, m;
  14 
  15   for(m=1; m<=3; m++){
  16     int j=4;
  17     a++;
  18     printf("\n ----- m=%d -----------\n",m);
  19     i=hoge(a, j);
  20     fuga(i);
  21     printf("at main a=%d\ti=%d\n", a,i);
  22   }
  23 
  24   return 0;
  25 }
  26 
  27 //============== ユーザー定義関数 =======================
  28 int hoge(int a, int b)
  29 {
  30   static int k=10;
  31   int l=20;
  32 
  33   printf("at hoge a=%d\tb=%d\n", a, b);
  34   printf("at hoge k=%d\tl=%d\n", k, l);
  35 
  36   k++;
  37   l++;
  38 
  39   return a+b;
  40 }

   1 #include <stdio.h>
   2 
   3 void fuga(int b);
   4 
   5 //============== ユーザー定義関数 =======================
   6 static int i=30;
   7 int d=1;
   8 
   9 void  fuga(int b)
  10 {
  11   i++;
  12   d+=i;
  13   printf("at fuga i=%d\td=%d\n", i,b);
  14 
  15 }



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成18年12月1日


no counter