- ベストアンサー
ループで表示したい値が表示されない理由
- 初心者の方がループで表示したい値が表示されない理由を教えてください。
- 以下のC言語のソースコードでは、指定した整数値の個数に応じて、0から10までの値を表示するループを作成していますが、表示がされません。
- 質問者が表示したいのは、以下のように連続して0から10までの数字が表示されることです。 12345678901234567890 しかし、現在のコードでは、ループ内で変数iが10以下の場合に0にリセットされてしまっています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
問題点は、 f ( i <= 10 ){ i = 0; } で、i=1のときに必ずi=0になってしまいfor文から抜けられません。 #include <stdio.h> int main(void) { int i = 0; int num; printf("整数を入力してください。:"); scanf("%d",&num); for (i = 0; i < num; i++){ printf("%d", (i+1)%10); } return(0); } でいいと思います。
その他の回答 (2)
- aris-wiz
- ベストアンサー率38% (96/252)
>現在のソースコードでは10以上の入力があった場合、 >無限ループに陥っているようです。 見間違えですね。。。 入力は2以上で無限ループのようです。
- aris-wiz
- ベストアンサー率38% (96/252)
>表示されません。 表示されないとは、全くでないということでしょうか? 症状は詳しく書くようにしてください。 >1234567890123456789012345 としたいとの事ですが、全部半角数字で良いでしょうか? 全角と半角では少し違ってきます。 ここからは半角の前提で書きます。 現在のソースコードでは10以上の入力があった場合、 無限ループに陥っているようです。 今回は表示する数字と、表示する回数は違っているので 別に表示する用の変数を用意しましょう。 そして表示は1からなので、一応1で初期化しておきます。 (後からやってもかまいません。) int output = 1; そして、出力する数字は0-9までですので、 outputが10以上ならoutputを0に戻します。 if( output>=10 ){ output=0; } そしてこれを、num回数分1加算しながら、 表示していきます。 printf("%d", output++ ); 貼り付けたソースコードと 合せて参考にしてみてください。
お礼
回答していただき有難うございます。 質問の内容がもっと細かくすることができず、すみませんでした。 とても参考になりました。またよろしくお願いします。
お礼
回答していただき有難うございます。 ・・・・(i+1)%10); とは凄い。いまの私には、全く思いつきません。 すごく勉強になりました。 またよろしくお願いします。