基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成19年 秋期 基本情報技術者 午後 問04
問04   スタックを使用して実数値を10進数字列に変換

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

〔プログラムの説明〕

 スタックを使って,実数値を 10 進数字列(文字列)に変換する副プログラム FloatFormat である。

(1) FloatFormat は,実数 Float の値を 10 進数字列に変換し,その先頭の数字から順に 1文字ずつ文字型配列 Out[] に格納する。

(2) 小数点以下は,引数 Num(Num≧1)で指定されたけた数までを格納する。

(3) FloatFormat の引数の仕様を表に示す。

    表 FloatFormat の引数の仕様
 
 引数   データ型    入力/出力          意味  
 Float    実数型   入力   変換対象の実数  
 Num   整数型   入力    文字列に変換する際の小数点以下のけた数(Num≧ 1)
 小数第 Num十1 位以下は切捨て   
 Out[]   文字型   出力   変換結果を格納する文字型の配列  
 Len   整数型   出力   配列 Oul[] に格納された変換結果の文字数  

(4) 実数 Floatの 値を 10 進数字列に変換する手順は,次のとおりである。

 @ Float の値が負の場合は,負符号を表す"−"を Out[] に格納し,Float の値を正数に変換する。
 A 整数部を,1の位から上位に向かって,1けたずつ 10 進数字に変換し,スタックに積む。
 B スタックに積み終わったら,スタックに積んだ文字を順番に取り出して Out[] に格納することによって,整数部の 10 進数字を正しい順番に並べ替える。
 C 整数部が0の場合は "0" を Out[] に格納する。
 D 小数点を表す "." を Out[] に格納する。
 E 小数部を,小数第1位から第 Num 位まで,1けたずつ 10 進数字に変換し, Out[] に格納する。

(5) Push() はスタックに1文字を積む関数,Pop() はスタックから1文字を取り出す関数である。 Int() は小数点以下を切り捨てる関数である。

(6) 配列の添字は0から始まり,文字型配列 Out[] の要素数は十分に大きいものとする。 また,プログラム中の各演算であふれは発生しないものとする。

(7) FloatFormat の変換例を図に示す。


  図 FloatFormat の変換例

[プログラム]

設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。

a に関する解答群

ア Fint − 10
イ Fint − Fint ÷ 10
ウ Fint − (Fint ÷ 10)× 10
エ Fint ÷ 10
オ (Fint ÷ 10)× 10

b に関する解答群

ア L = 0
イ L = 0 or Out[0] = "−"
ウ L = 0 or (L =1 and out[0] = "−")
エ L = 1
オ L = 1 and Out[0] ="−"

c,d に関する解答群

ア Fdec − Int(Fdec)
イ Fdec − Int(Fdec × 10)
ウ Fdec − Int(Fdec ÷ 10)
エ Fdec × 10
オ Fdec ÷ 10
解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

解答 d ←クリックすると正解が表示されます

基本情報技術者試験


設問2 次の記述中の に入れる正しい答えを, 解答群の中から選べ。

 Float = −0.012,Num = 2 として FloatFormat を呼び出した場合, プログラム中のαの部分は 回実行され, βの部分は 回実行される。

解答群

ア 0      イ 1      ウ 2      エ 3      オ 4
解答 e ←クリックすると正解が表示されます

解答 f ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]