プロが教える店舗&オフィスのセキュリティ対策術

はじめまして。
C言語初心者です。
while文のところまでやっとたどり着きましたが、次の問題がどうしても解くことができません。

**********************

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

**********************

#include<stdio.h>

int main(void)
{
int a;
scanf("%d", &a);

while(a!==0){
printf("%d*\n", a);

}
}

こんな感じでつくってみたのですが、whileの条件部分がさっぱり分かりません。
int a の数字文だけ、*で表示する、というのも方法が思いつきません。

アドバイス、お願いいたします。

A 回答 (5件)

int a, b=0;



while( a>0 && a>b )
{
printf( "*" );
b++;
}
printf( "\n" );

こんなんでしょうか。
    • good
    • 0

そんなことは無いと思いますが、学校の課題などではないですよね(笑)



#include<stdio.h>

int main(void)
{
int a;
scanf("%d", &a);

while(a!==0){
printf("*");
a--;
}
printf("\n");
}

これでいかがでしょうか?
条件部は入力されたaの値がゼロでなかったら、という意味で、一個の*を表示したら、aの値を一個減らし(a--とa=a-1は同じ意味)、またゼロで無いか判定し・・・という繰り返しです。
    • good
    • 0

整数を入力し、「*」を1個だけ表示し、最後に改行するプログラムを if 文を使って作りなさい。


但し、0または負の値が入力された場合は、「*」は表示せず、改行のみを表示すること。


ならば、作れますか?
それができるのであれば、あとほんのちょっとで while を使う例題もできますよ。
    • good
    • 0

while(a-->0){


printf("*");
}
printf("\n");
    • good
    • 0

こんにちは。

yasuyuki007と申します。

まず、貴方が作成したプログラムのミスの指摘から。
> while(a!==0){
「!==」という演算子は存在しません。
ゼロ以外という比較演算子は「!=」です。
また、ループ継続条件が「aがゼロ以外の値である間」となっていますが、ループ中において「aの値が変わっていない」⇒このままでは、無限ループになります。
以上のことを踏まえた上で、以下のプログラムを見て下さいね。

#include<stdio.h>

int main(void)
{
int a;

printf("整数を入力して下さい:");
scanf("%d", &a);

while(a > 0){
printf("*");
a--;// a = a - 1;と同じ意味
}
printf("\n");

return 0;// main関数をint型で宣言しているので必要
}

※C言語は奥が深く、難しいプログラミング言語だから、一歩ずつ確実にものにしていって下さいね。
(誰でも初めは初心者です!!)
    • good
    • 1

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