アスタリスク(*)で正方形を作るプログラムをC言語で書いているのですが関数で描画部分を作ることが出来ません。動かす方法を教えて頂けないでしょうか
#include <stdio.h>
void seihoukei(void);
int no,i,j,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);
for(i=1;i<cnt;i++){
for(j=1;j<=cnt;j++){
seihoukei();
}
}
return 0;
}
void seihoukei(void)
{
j = 1;
while(j <= j){
putchar('*');
j=j+1;
}
putchar('\n');
}
No.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');
}
}
を呼び出す形にすればいいと思いますがとりあえず文法が怪しいのでその辺を注意しながらやるといいです。
No.2
- 回答日時:
変数の有効範囲(スコープ)、グローバル変数、ローカル変数、といったものを勉強しましょう。
また、関数への値の渡し方(引数の使い方)も勉強しましょう。
main関数中の
> for(i=1;i<cnt;i++){
> for(j=1;j<=cnt;j++)
にある i, j と seihoukei関数中の
> j = 1;
> while(j <= j){
のi,j とは名前は同じですが、まったく関係のない別の変数です。
No.1
- 回答日時:
変更箇所ができるだけ少なくなるようにコーディングしてみました。
//--------------------------------------------------------------------
#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');
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語での引数の省略方法
-
【C++】関数ポインタの使い方
-
「指定されたキャストは有効で...
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
「{ } で囲むだけ」は正しい?
-
実数の整数部,小数部の取得
-
c言語の配列を使ってサイコロを...
-
if と配列の組み合わせ
-
C言語で行列の積を計算できるよ...
-
入力を待たずにstdinの監視をし...
-
C言語 エラーの原因がわからな...
-
C++でvectorにテキストファイル...
-
ラップ関数とはどんなものですか?
-
数字列を3桁ごとにカンマで区切...
-
return 1L
-
PowerShellがうまくいかない
-
C言語の配列をC++のvectorに高...
-
野球の対戦成績のテーブル表示...
-
部分行列の抜き出し(C言語)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
c++でテンプレートのコードでわ...
-
(int *)の意味
-
ラップ関数とはどんなものですか?
-
数字列を3桁ごとにカンマで区切...
-
c言語のリダイレクトによる円...
-
比較回数と交換回数表示について
-
実数の整数部,小数部の取得
-
if と配列の組み合わせ
-
構造体の勉強中です 合計点の高...
-
PowerShellがうまくいかない
-
c言語の配列を使ってサイコロを...
-
課題でつまってます・・・
-
C言語のサイコロシミュレート
-
エラー 添字が付けられた値が、...
おすすめ情報