シフト演算を用いて「□」と「■」を以下のように表示せよという問題が出たのですが
分からなくて困っています。
どなたかお知恵を貸していただけないでしょうか?
□□□□□□□□■
□□□□□□□■
□□□□□□■
□□□□□■
□□□□■
□□□■
□□■
□■
■
□■
□□■
□□□■
□□□□■
□□□□□■
□□□□□□■
□□□□□□□■
□□□□□□□□■
シフト演算についての質問です。
Re:シフト演算についての質問です。
シフト演算を、どう描画と結びつけるのかが不明なのですが とりあえず こんな感じでどうでしょう? ※Shiftという関数は、指定した数だけ"□"を表示する関数です。 (ただし、一番右端が"■"になる) あと、このプログラムには色々と修正の余地があるので、考えてみると良いと思います。 ----------------------------------------------------------------- #include <stdio.h> void Shift(int num) { int i = 0; if(num > 0){ i = 1 << (num - 1); while(i){ if(i & 1) printf("■"); else printf("□"); i >>= 1; } } puts(" "); } int main(void) { Shift(9); Shift(8); Shift(7); Shift(6); Shift(5); Shift(4); Shift(3); Shift(2); Shift(1); Shift(2); Shift(3); Shift(4); Shift(5); Shift(6); Shift(7); Shift(8); Shift(9); return 0; } -----------------------------------------------------------------