下記のプログラムを実行するとコマンドプロントになにも表示されず、強制終了しなければならなくなってしまいます。
whileのところがおかしいのはわかったのですが、この書き方の何がいけないのかが分かりません。
初歩的な質問で申し訳ありませんが、回答していただけると有難いです。
#include <stdio.h>
int main(void){
int count, i;
printf("何段ですか?");
scanf("%d", &count);
for(i = 1; i <= count; i++){
while(i-- > 0){
putchar('*');
}
putchar('\n');
}
return 0;
}
No.1ベストアンサー
- 回答日時:
変数 i を段数のカウント用に使っているようですが、
for文の中にあるwhile文のループで
i が0になるまで減らしてしまっているため、
いつまでたってもfor文のループを抜けることができません。
下記のように別の変数を導入すれば、うまくいくと思います。
なお、改行を入れる場所がまずかったので修正してあります。
#include <stdio.h>
int main(void)
{
int count, n, i;
printf("何段ですか?");
scanf("%d", &count);
for (i = 1; i <= count; i++) {
n = i;
while (n-- > 0) {
putchar('*');
}
putchar('\n');
}
return 0;
}
No.4
- 回答日時:
ループのための変数は別々に管理すべきでしょう。
あとこの場合なら while より for 構文のほうが適しているかと思います。
int i,j;
for (i = 1; i <= count; i++) {
for (j = 0; j < i; j++) {
putchar('*');
}
putchar('\n');
}
No.3
- 回答日時:
【別解】
このコードは、出力画面をxy平面と見立てて、
不等式が表わす領域に対して'*'を出力することによって
直角三角形を書くようになっています。
この考え方を応用すると、正方形・長方形・ひし形などの
比較的単純な図形が、不等式の部分を修正するだけで
書けるようになります。
#include <stdio.h>
int main(void)
{
int count, x, y;
printf("何段ですか?");
scanf("%d", &count);
for (y = count - 1; y >= 0; y--) {
for (x = 0; x < count; x++) {
putchar((y <= -x + count - 1) ? '*' : ' ');
}
putchar('\n');
}
return 0;
}
>出力画面をxy平面と見立てて
こういう方法もあるんですね。これならいろいろ表示させられそうです。
参考にさせていただきます。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
for文の中にswitch文はいれられ...
-
getcの改行判定
-
C言語階乗の総和を求める
-
配列を使って魔方陣
-
while文について、c言語...
-
プログラミングで二番目に大き...
-
C言語 数字以外を入力させない...
-
c言語のwhile文を使った計算で...
-
C言語プログラムが理解できなくて…
-
C言語で電卓を作成する。
-
配列を関数に渡す方法
-
C言語の二分法のプログラムにつ...
-
c言語for文
-
scanf関数を用いての加減乗除%...
-
階乗のプログラム!!
-
計算結果がlong型以上になる場...
-
c言語プログラミングで1から100...
-
初心者です。for文、if文を使っ...
おすすめ情報