- ベストアンサー
C言語でアスタリスクで正方形を作るプログラム
- C言語でアスタリスク(*)で正方形を描画するプログラムについての質問です。
- 関数で描画部分を作ることができず、正しい方法を知りたいです。
- 数字を入力して正方形のサイズを指定し、アスタリスクで正方形を描画します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
とりあえずwhile(j <= j)は無限ループになります。 for(i=1;i<cnt;i++){ for(j=1;j<=cnt;j++){ でcnt*cntの'*'を書けばいいという意図は見えるのですが void seihoukei(void)でまたループしてるので何がしたいのかよく分かりません。 またここがなぜwhileなのかも不明 ついでにforの条件式がおかしいです。 とりあえず正方形を書きたいだけであれば。 for(i=1;i<cnt;i++){ for(j=1;j<=cnt;j++){ putchar('*'); } putchar('\n'); } でいけると思います。 もし関数にしたいなら for(i=1;i<cnt;i++){ for(j=1;j<=cnt;j++){ seihoukei(); } } をseihoukei(cnt);にして void seihoukei(int size) { int i,j; for(i=0;i<size;i++){ for(j=0;j<size;j++){ putchar('*'); } putchar('\n'); } } を呼び出す形にすればいいと思いますがとりあえず文法が怪しいのでその辺を注意しながらやるといいです。
その他の回答 (2)
- kmee
- ベストアンサー率55% (1857/3366)
変数の有効範囲(スコープ)、グローバル変数、ローカル変数、といったものを勉強しましょう。 また、関数への値の渡し方(引数の使い方)も勉強しましょう。 main関数中の > for(i=1;i<cnt;i++){ > for(j=1;j<=cnt;j++) にある i, j と seihoukei関数中の > j = 1; > while(j <= j){ のi,j とは名前は同じですが、まったく関係のない別の変数です。
- kb-nike
- ベストアンサー率36% (72/200)
変更箇所ができるだけ少なくなるようにコーディングしてみました。 //-------------------------------------------------------------------- #include <stdio.h> void seihoukei(int cnt); int main(void) { int cnt, i, j; do{ printf("数字(2-9)を入力して下さい:"); scanf("%d", &cnt); if(cnt < 2 || cnt > 9){ printf("入力エラーです。もう一度入力して下さい"); } } while(cnt<2 || cnt>9); seihoukei(cnt); return 0; } void seihoukei(int cnt) { int i, j; for(i=0; i<cnt; i++){ for(j=0; j<cnt; j++){ putchar('*'); } putchar('\n'); } putchar('\n'); }