平成21年秋期試験午後問題 問9

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】

問9 ソフトウェア開発(C)

次のCプログラムの説明及びプログラムを読んで,設問1,2に答えよ。

〔プログラムの説明〕
 C言語では整数型の変数に格納できる値には上限がある。これを超える正の整数(以下,正の多倍長整数という)の入出力と加算を行うプログラムである。
  • 正の多倍長整数は,次に示すMP型の構造体を用いて表現する。
    pm09_1.png
     正の多倍長整数を,下位から9けたずつに切り分けて,構造体MPのメンバーである配列 data の要素番号の小さい方から順番に値を格納する。例えば,46284059827463859201283844157134007652918723147641 という整数の場合,図のとおりになる。
    pm09_2.png
     構造体のメンバー length には,実際に値を格納した要素数を入れる。図の場合は6である。
  • 関数の仕様は,次のとおりである。
    void set(MP *num,const char str[]);
    引数:
    num MP型の構造体で表現された多倍長整数
    str 文字列で表現された多倍長整数であって,1~9の数字で始まる。
    機能:
    文字列で与えられた多倍長整数strを変換して,MP型の構造体 num に格納する。num のメンバー data は,変換後の数値を格納するのに十分な要素数が確保されているものとする。
    返却値:
    なし
    void print(const MP *num);
    引数:
    num MP型の構造体で表現された多倍長整数
    機能:
    多倍長整数を出力する。
    返却値:
    なし
    void add(const MP *a,const MP *b,MP *c);
    引数:
    a,b,c MP型の構造体で表現された多倍長整数であり,cは,a及びbではないものとする。
    機能:
    二つの多倍長整数 a,bの和を多倍長整数cに格納する。cのメンバー data は,加算処理を行うのに十分な要素数が確保されているものとする。
    返却値:
    なし
  • 次のライブラリ関数を用いる。
    size_t strlen(const char *s);
    機能:
    sが指す文字列の長さを計算する。
    返却値:
    終端を示すナル文字に先行する文字の個数を返す。
pm09_3.png

設問1

プログラム中の に入れる正しい答えを,解答群の中から選べ。
a に関する解答群
  • str_idx != 0
  • str_idx < 0
  • str_idx <= 0
  • str_idx > 0
  • str_idx >= 0
b に関する解答群
  • i < NUM_DIGIT
  • i < NUM_DIGIT && str_idx <= 0
  • i < NUM_DIGIT && str_idx >= 0
  • i < NUM_DIGIT || str_idx <= 0
  • i < NUM_DIGIT || str_idx >= 0
c に関する解答群
  • %=10
  • *=10
  • +=10
  • -=10
  • /=10
d に関する解答群
  • i = 0; i <= num->length - 1; i++
  • i = 0; i <= num->length - 2; i++
  • i = num->length - 1; i >= 0; i--
  • i = num->length - 2; i >= 0; i--
解答選択欄
  • a:
  • b:
  • c:
  • d:
  • a=
  • b=
  • c=
  • d=

解説

この設問の解説はまだありません。

設問2

プログラムの動作について,次の記述中の に入れる正しい答えを解答群の中から選べ。

 関数 add を用いて以下の(1)に示す二つの多倍長整数を加算する場合,プログラム中のα部分はe回実行され,β部分はf回実行される。また,以下の(2)に示す二つの多倍長整数を加算する場合,β部分はg回実行される。
pm09_4.png
e,f,g に関する解答群
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
解答選択欄
  • e:
  • f:
  • g:
  • e=
  • f=
  • g=

解説

この設問の解説はまだありません。

Pagetop