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

平成20年 秋期 基本情報技術者 午後 問06
問06   C言語

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

〔プログラムの説明〕

 金額を表すときのように,整数を3けた区切り形式の文字列に変換する関数 convert である。

(1) 次のルールに基づいて変換を行う。

@ 整数値が負の場合,先頭にマイナス符号を付ける。

A 数値の下位から3けたごとにコンマを挿入する。

 変換例を表に示す。

      表 変換例

 整数  3けた区切り形式の文字列 
 1234567  1,234,567  
 -57482  -57,482  
     63  63  
 -999999  -999,999 

(2) プログラム中で定義されている関数の仕様は,次のとおりである。

   void convert(long num, char str[]);

引数:整数num, 変換後の文字列 str[]
返却値:なし
機能:整数 num を3けた区切り形式の文字列に変換して str[] に先頭から格納する。
str[] には変換後の文字列を格納するのに十分な領域が確保されているものとする。
また,整数 num は9けた以下とする。

〔プログラム〕

void convert(long, char[]);
void convert(long num, char str[]) {
   int minus = 0, i = 0, j = 0;
   char table[] = "0123456789";
   char tmp;
   if(num < 0){
      minus = 1;
      num = -num;
   }
   do{
      str[j++] = table[num % 10 ]; /* 数値の下位から順に文字に変換 */
      num ;
      i++;
      if(  == 0 && num != 0){
          str[j++]= ',';
      }
   }while(num != 0);
   if(minus != 0){
      str[j++] = '-';
   }
   str[j--] = '\0';
   for(i = 0;  ) {  /* 順序を逆にする。*/
      tmp = str[i];
      str[i] = str[j];
      str[j] = tmp;
   }
}
設問  プログラム中の に入れる正しい答えを, 解答群の中から選べ。

a に関する解答群

ア %= 10     イ *= -1

ウ *= -10     エ *= 10

オ /= 10

b に関する解答群 ア (i + 1) % 3      イ (i + 2) % 3

ウ (j + 1) % 3      エ (j + 2) % 3

オ i % 3         カ j % 3

c に関する解答群 ア i != j; i++      イ i != j; i++, j--

ウ i < j; i++      エ i < j; i++, j--

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

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

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


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp |  プライバシーポリシー・著作権・リンクお問合わせ