本文へスキップ

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


Since 2016.4.19

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

W−3

次のC言語のプログラムを実行したときに、表示される結果を選べ。
#include <stdio.h>
int x, y ;
int f(int a, int x)
{
 ++y ;
 ++x ;
 return a+y ;
}
main () {
 int y, z ;
 y = 100 ;
 z = f(10, y) ;
 z += y ;
 printf("%d\n", z) ;
}

@ 11  A 101  B 110  C 111  D 211


正解

C


解説

main() の x, は外部変数であり、y, z は内部変数である。
f() の x, y は外部変数であり、 a は内部変数である。

以下のように変数の値が変化していく。
なお、main() の y は便宜上 Y と記す。

int y, z   ・・・(x, Y, z) = (0 ,0, 0)
y = 100   ・・・(x, Y, z) = (0 ,100, 0)
f(10, y)   ・・・(x, Y, z) = (0 ,100, 0)
 f(int a, int x)    ・・・(x, y) = (100, 0)  a = 10
  ++y    ・・・(x, y) = (100, 1)  a = 10
  ++x    ・・・(x, y) = (101, 1)  a = 10
  return a+y ・・・(x, y) = (101, 1)  a = 10
z = f(10, y)  ・・・(x, Y, z) = (101, 100, 11)
z += y    ・・・(x, Y, z) = (101, 100, 111)

なお、 z += y は  z = z + y と同じことである。

W−2 目次 W−4