後期中間試験解答用紙 (1E 情報処理基礎 )
電気情報工学科 学籍番号 氏名
1 制御の流れ
[問1] 各3点
[リスト1] エ [リスト2] キ [リスト3] オ または ケ
2 関数と変数
2.1 関数と変数のスコープ
[問1] 7点
問2の下の表に記述する.変数の種類は,GとL,Bで記述のこと.
G:グローバル変数 L:ローカル変数
B:ブロック内宣言の変数 [問2] 7点
行 変数名 変数の種類 有効範囲
(G/L/B) 開始行 終了行
4 foo G 7 29
8 foo L 9 19
8 bar L 9 19
13 j B 14 16
22 a L 23 29
22 b L 23 29
24 i L 25 29
[問3] 3点
ブロック内宣言の変数→ローカル変数→グローバル変数
[問4] 3点
3行目
[問5] 3点
実引数:14行目のfooとbar 仮引数:22行目のaとb
1
[問6] 5点
引数間で次の動作が行われる.
– 実引数のfooに格納されている値が,仮引数のaにコピーされる.
– 実引数のbarに格納されている値が,仮引数のbにコピーされる.
[問7] 2点
i
[問8] 2点
void
[問9] 5点
111 112 113
2.2 記憶クラス
[問1] 各1点
[A] auto [B] static [C] staic [D] extern [E] register
[問2] 各1点
[a] ウ [b] ア [c] エ [d] オ [e] イ
[問3] 2点
デフォルトである自動変数(auto)が使われる.
2
3 プログラム作成
3.1 関数の最大値を求める
20点
#include <stdio.h>
#include <math.h>
double f(double x); //プロトタイプ宣言
//========================================================
// メイン関数
//========================================================
int main(void){
double x, dx, xmin, xmax, y;
double max_y, max_x;
int i, ncal;
//--- 計算条件設定 --- xmin = -10;
xmax = 10;
dx = 0.00001;
ncal = (xmax-xmin)/dx;
//--- 暫定最大値 --- max_x = xmin;
max_y = f(xmin);
//--- 最大値検索 --- for(i=1; i<=ncal; i++){
x = xmin + i*dx;
y = f(x);
if(max_y <= y){ //最大値が見つかった場合 max_x = x;
max_y = y;
} }
printf("%fのとき,最大%fとなる.\n",max_x, max_y);
return 0;
}
//============================================================
// ユーザー定義関数
//============================================================
double f(double x){
double y;
y = -5*x*x - 6*x + 10 - sin(x); // 関数の計算 return y;
}
3
3.2 三角形の面積と周長
20点
#include <stdio.h>
#include <math.h>
void info_tri(double a, double b, double c); // プロトタイプ宣言
double S, total_len; // グローバル変数
//===========================================================
// メイン関数
//===========================================================
int main(void) {
double hen1, hen2, hen3;
printf("辺1の長さ?\t");
scanf("%lf",&hen1);
printf("辺2の長さ?\t");
scanf("%lf",&hen2);
printf("辺3の長さ?\t");
scanf("%lf",&hen3);
info_tri(hen1, hen2, hen3);
if(S < -990){
printf("入力した辺では,三角形はできません!!!!!\n");
}else{
printf("面積は,%fです.\n", S);
printf("周長は,%fです.\n", total_len);
}
return 0;
}
//===========================================================
// ユーザー定義関数
//===========================================================
void info_tri(double a, double b, double c) {
double s, test;
s=(a+b+c)/2;
test=s*(s-a)*(s-b)*(s-c);
if(test<=0){
S = -999.0;
}else{
S = sqrt(test);
total_len = a+b+c;
} }
4 応用問題
[問1] 1点
120 [問2] 1点
0 1 2 3
4