今日の検定問題より。〜トレース〜
今日受けた某マルチメディア検定の問題に
トレースの問題があったのですが、
とても素晴らしかったので紹介します。
また、問題自体はフローチャートでしたが、
表現がだるいのでCに書き直します。
ご了承ください。
void main (void)
{
int a;
int x = 0,y = 0;
int c = -9;
char buf[10];
fgets(buf, (sizeof(buf) - 1), stdin);
sscanf(buf, "%d", &a);
while(1){
draw(x,y); //座標x,yを黒く塗る関数。
x++;
if(x >= 10){
break;
}
c += a;
if(c >= 9){
y++;
c = c - (2 * 9);
}
}
}
でトレースするのは終了までのxの値なわけです。
で、この問題の選択肢。
ア.0→1→2→3→4→5→6→7→8→9→10
イ.0→1→10
ウ.0→1→7→13
エ.0→6
もう一度よく見てみよう。
無限ループの中にあって、xが10以上になるとbreak。
xは0で初期化されており、ループ1回につき
1度インクリメントされる。
選択肢ねぇぇぇえぇぇ。
なんか不安になってきた。
これアだよね?