情報処理技術者試験の過去問と解説なら「情報処理試験.jp」
[広告] 身体のケア
桜の情報開花予想千鳥ヶ淵隅田公園弘前公園魚の旬年賀はがき
コンサートワクワク学校アルバム大野智櫻井翔相葉雅紀二宮和也松本潤

平成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--


[←前の問題] [次の問題→] [問題一覧表] [分野別] [情報処理試験.jpのTOP]