プログラムの勉強のための問題集 - 問題5.この図を再現しなさい(2)(解答)
■解答■
#include <stdio.h>
int main(){
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
if( (i + j) % 2 == 0 ){
printf("■");
}else{
printf("□");
}
}
printf("\n");
}
return 0;
}
■解説■
一行ずつ出力すれば、下記のようなプログラムになりますが、非常に冗長です。
#includeint main(){ for(int i=0; i<4; i++){ if( i % 2 == 0 ){ printf("■"); }else{ printf("□"); } } printf("\n"); for(int i=0; i<4; i++){ if( i % 2 == 0 ){ printf("□"); }else{ printf("■"); } } printf("\n"); for(int i=0; i<4; i++){ if( i % 2 == 0 ){ printf("■"); }else{ printf("□"); } } printf("\n"); for(int i=0; i<4; i++){ if( i % 2 == 0 ){ printf("□"); }else{ printf("■"); } } printf("\n"); return 0; }
そこで、解答のプログラムでは、 i + j をした数値が偶数か、奇数かで判定しています。
わかりやすいように、 4 * 4 のブロックにおいて i + j がどのような数値になっているのかを表で表します。
┏━┳━┳━┳━┓ ┃ 0┃ 1┃ 2┃ 3┃ ┣━╋━╋━╋━┫ ┃ 1┃ 2┃ 3┃ 4┃ ┣━╋━╋━╋━┫ ┃ 2┃ 3┃ 4┃ 5┃ ┣━╋━╋━╋━┫ ┃ 3┃ 4┃ 5┃ 6┃ ┗━┻━┻━┻━┛
このページのトップはこちら
です。