dポイントプレゼントキャンペーン実施中!

わからないのでよろしくお願いします。何回やってもうまく表示できません。

整数を入力し、入力された整数の数だけ「*」を横一列に表示し、最後に改行するプログラムを while 文を使って作りなさい。
但し、0または負の値が入力された場合は、「*」は表示せず、改行のみを表示すること。
▼10が入力された場合の実行例

**********

#include<stdio.h>
int main(void)
{
int n, kai;

scanf("%d",&n);
printf("\n nyuryoku=%d",n);
while(0<kai){
kai=kai--;


printf("*");
}
kai=n;
printf("\n");
}

A 回答 (1件)

>while(0<kai){



 この行が最初に実行される時の kai の値はいくつですか? 私には値が入力されていないように見えますが。

>kai=n;

 whileループの後のこの代入操作は何か意味がありますか?

単純な勘違いか編集ミスですよね。kai=n; を whileループの前に持って行けば解決するはずです。あるいは、n と kai を使い分ける意味もないので、むしろどちらかひとつに統一してしまった方がいいですね。ただ、もし、

>printf("\n nyuryoku=%d",n);

を whileループの後ろに置きたいのであれば、2つの変数を使い分ける意味があります。ループの最中に値を変化させてしまいますから。
    • good
    • 0
この回答へのお礼

ありがとうございました。nに統一して解決しました。

お礼日時:2009/07/03 23:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!