市松模様

こちらの問題に、チャレンジしてみました。m(_ _)m
http://rina.jpn.ph/rance/

[出力結果]

*****     *****     *****
*****     *****     *****
*****     *****     *****
     *****     *****     
     *****     *****     
     *****     *****     
*****     *****     *****
*****     *****     *****
*****     *****     *****
     *****     *****     
     *****     *****     
     *****     *****     

問題を解く時のポリシーとして、「人に読みやすいソースコード」を心がけている(つもり)なのですが…入れ子が4重のところは改良したいです。ラインバッファを使うべきか。

演算子"%"、"*"、"/"の優先順位は同じであり、かつ左結合であるため、*の演算をカッコで括っています。

[ソースコード]

      1 #include <stdio.h>
      2 
      3 #define C_SQUARE_COLNUM             5
      4 #define C_SQUARE_ROWNUM             3
      5 #define C_SQUARE_VERTICAL_BLOCKS    4
      6 #define C_SQUARE_HORIZONTAL_BLOCKS  5
      7 
      8 int main(void)
      9 {
     10     int row;
     11     int col;
     12 
     13     /* loop for each row */
     14     for(row=0; row<C_SQUARE_VERTICAL_BLOCKS*C_SQUARE_ROWNUM; row++){
     15         /* loop for each column */
     16         for(col=0; col<C_SQUARE_HORIZONTAL_BLOCKS*C_SQUARE_COLNUM; col++){
     17             /* put row */
     18             if(col%(C_SQUARE_COLNUM*2)>=0 && col%(C_SQUARE_COLNUM*2)<C_SQUARE_COLNUM){
     19                 if(row%(C_SQUARE_ROWNUM*2) >= 0 && row%(C_SQUARE_ROWNUM*2) < C_SQUARE_ROWNUM){
     20                     printf("*");
     21                 }else{
     22                     printf(" ");
     23                 }
     24             }else{
     25                 if(row%(C_SQUARE_ROWNUM*2)>= 0 && row%(C_SQUARE_ROWNUM*2)<C_SQUARE_ROWNUM){
     26                     printf(" ");
     27                 }else{
     28                     printf("*");
     29                 }
     30             }
     31         } /* loop for each column */
     32         printf("\n");
     33     } /* loop for each row */
     34 
     35     return 0;
     36 }