本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成16年度 技術士第一次試験問題【専門科目】

W−4

次のC言語のプログラムを実行することを考える。

int a=1; int b=2; int c=3;
void f(int x, int y, int z) {
 int b=0;
 a=a+x; b=b+y; c=c+z;
 printf("%d,%d,%d,", a, b, c);
}
main() {
 int a;
 a=10; b=20; c=30;
 f(100,200,300);
 printf("%d,%d,%d\n", a, b, c);
}

@ 101,200,330,10,20,330

A 101,200,330,101,200,330

B 101,202,303,10,20,30

C 110,220,330,10,20,330

D 110,220,330,110,220,330


正解

@


解説

main関数で使われる変数は以下の通り。
 a:main関数
 b:外部変数
 c:外部変数

関数 f で使われる変数は以下の通り。
 a:外部変数
 b:関数 f
 c:外部変数

便宜上、
外部変数を A, B, C
関数 f のローカル変数を b
main関数のローカル変数を a
と表すと、以下のように変数の値が変化していく。

まずは外部変数に値が入る。 ・・・ A=1; B=2; C=3;
main:
 a=10; B=20; C=30;
f:
 b=0
 A=A+x; b=b+y; C=C+z;  ・・・ A=1+100, b=0+200, C=30+300
 printf("%d,%d,%d,", A, b, C); ・・・ 101,200,330
main:
 printf("%d,%d,%d\n", a, B, C); ・・・ 10,20,330

W−3 目次 W−5