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

〔プログラムの説明〕
 金額を表すときのように,整数を3けた区切り形式の文字列に変換する関数convertである。
(1)次のルールに基づいて変換を行う。
 ① 整数値が負の場合,先頭にマイナス符号を付ける。
 ② 数値の下位から3けたごとにコンマを挿入する。
  変換例を表に示す。
H20秋FE午後1問6表
(2) プログラム中で定義されている関数の仕様は,次のとおりである。
   void convert(long num,char str[ ]);
    引数:整数num.変換後の文字列strr】
    返却値:なし
    機能:整数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 [  a  ];
           i++;
           if([  b  ] == 0 && num ! = 0){
              str[j++] = ’,’
           }
     }while(num != 0);

    if(minus != 0)[
       str[j++] = '-';
    }
    str[j--] = '\0’;

    for(i =0; [  c  ]){        /* 順序を逆にする */
         tmp = srt[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++
イ i != j; i++, j--
エ i < j; i++,j--
正解は、
a オ
b オ
c エ
です。