コードの空欄問題

情報処理試験のようなテストを受けた。その中で、今思うとなぜ思いつかなかったか、という問題に遭遇した。あまりに悔しいので、ここに書くことにした。詳細は書けないので、概要だけ。

num[] = "681";

を整数に変換するコード。ただ穴埋め式なので、ちょっと面倒。

char c[11] = "0123456789";
int x;

x = 0;
for (i=0; num[i] != "\0"; i++) {
  for (n = 0; n <= 9; n++) {
    [ここに入るコードを答える]
  }

  if (n == 10) {
    printf("Error:Illegal statment.\n");
    exit(1);
  }
  [ここに入るコードを答える]
}

実際の問題もう少し惑わせるコードも入っているのだけど、でも681の2が10の2乗×6で、その2を導くことに頭がいってしまい、上の空欄で10の階乗の値、つまり何桁かを求め、下の空欄で階乗してxに加算していくようなことを考え、迷いに迷ってしまった。

これはアルゴリズムとして取り上げるほどのことは無いけれど、こういったアルゴリズムをいくつ蓄積しているかでソフト開発のスキルは決まってくる。今からでも遅くない、これまでに確立されたアルゴリズムを勉強していきたい。