本文へスキップ

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


Since 2016.4.19

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

W−22

以下のプログラムは整数列を入力パラメータとし、ある処理をして結果を返すJavaのプログラム (メソッド) である。このテストデータとして、次の項目からパステストの一種である分岐網羅の基準を100%満たすものを選択せよ。なお、分岐網羅とはプログラムに対応するコントロールフローグラフの全アーク (またはリンク) を網羅することである。

int check ( int[] data ) {
 int sum = 0;
  int i;
   for (i = 0; data[i] > 0; i++) {
    if (data[i] > 80) sum = sum + 3;
    else {
     if (data [i] > 50) sum = sum + 2;
     else sum = sum + 1;
    }
   }
  return sum;
}

@ (79, 50, 1, 0)

A (80, 60, 40, 20, 0)

B (100, 81, 80, 79, 51, 0)

C (100, 81, 50, 49, 0)

D (130, 80, 50, 0)


正解

D


解説

題意より、
sum = sum + 3;
sum = sum + 2;
sum = sum + 1;
のすべての処理を網羅する必要がある。

整数列が入力パラメータであるから
81以上:sum = sum + 3;
51以上、80以下:sum = sum + 2;
1以上 50以下:sum = sum + 1;
0の時:forループを抜け、return する。

すべての条件が揃っているのは、Dである。

@ 81以上の数字がない。

A 81以上の数字がない。

B 1以上、50以下の数字がない。

C 51以上、80以下の数字がない。

D 正しい。

W−21 目次 W−23