• 締切済み

プログラミングCの質問です

現在10×10の市松模様を表示させるというプログラムを作成しています。 #define文、IF文、for文の使用、printfを使って■と□を表示させることが条件です。 間違っているところの指摘をお願いします。 #include <stdio.h> #define N 10 int main(void) { for( i=1 ; i<=N ; ++i ) { for( j=1 ; j<=N ; ++j ) } if( (i+j) % 2 ){ printf("■"); }else printf("□"); } printf("\n"); i++; } return 0; }

みんなの回答

回答No.3

既に回答に出ていますが、箇条書きにしたほうがわかりやすいと思うので。 1. 変数の宣言がない。 2. {}の対応が取れていない。 3. iを余分に増やしている。 コンパイラーにかければ1, 2をエラーとして出力してくれるはずなので、それを修正しましょう。 C言語では文が1つの場合、{}を省略することができます。ただ、その後の加筆などで思わぬ不具合を生み出すことも多々あるので、コーディング規約で省略することが決まっている場合を除き、{}を極力書くようにしたほうがよいと思います。 1-3を修正して、■と□を"*"と" "にしたらこんな感じですね。C99を理解するコンパイラーでないとコンパイルできませんので、gccなら-std=c99というオプションを付けないとコンパイルできないかもしれませんが。 #include <stdio.h> #define N 10 int main(void) { for (int i = 1; i <= N; ++i) { for (int j = 1; j <= N; ++j) { if ((i + j) % 2) { printf("*"); } else { printf(" "); } } printf("\n"); } return 0; }

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.2

ANo.1さんが指摘されていますが、コンパイルのエラーメッセージ位は書き込んでいただきたいですね。 {}の対応とか、forでiを回しているのにi++でさらに増分しているとか、forの++i/++jは正しいのかなどを検討してみてください。

回答No.1

少なくともコンパイル・エラーの取れたものを示してくださいよ。