• 締切済み

while文を使った問題なのですが・・

はじめまして。 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 の数字文だけ、*で表示する、というのも方法が思いつきません。 アドバイス、お願いいたします。

みんなの回答

回答No.5

こんにちは。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言語は奥が深く、難しいプログラミング言語だから、一歩ずつ確実にものにしていって下さいね。 (誰でも初めは初心者です!!)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

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

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.3

整数を入力し、「*」を1個だけ表示し、最後に改行するプログラムを if 文を使って作りなさい。 但し、0または負の値が入力された場合は、「*」は表示せず、改行のみを表示すること。 ならば、作れますか? それができるのであれば、あとほんのちょっとで while を使う例題もできますよ。

  • keydaimon
  • ベストアンサー率28% (80/285)
回答No.2

そんなことは無いと思いますが、学校の課題などではないですよね(笑) #include<stdio.h> int main(void) { int a; scanf("%d", &a); while(a!==0){ printf("*"); a--; } printf("\n"); } これでいかがでしょうか? 条件部は入力されたaの値がゼロでなかったら、という意味で、一個の*を表示したら、aの値を一個減らし(a--とa=a-1は同じ意味)、またゼロで無いか判定し・・・という繰り返しです。

  • 6dou_rinne
  • ベストアンサー率25% (1361/5264)
回答No.1

int a, b=0; while( a>0 && a>b ) { printf( "*" ); b++; } printf( "\n" ); こんなんでしょうか。