電子書籍の厳選無料作品が豊富!

ループで、どうしてもわからないので、質問します。

  1234567890123456789012345

と、いうように表示したいのですが、以下のソースでは、表示されません。教えてください。
 ※ 読み込まれた整数値の個数は25とした場合です。

#include<stdio.h>

int main(void)
{
inti = 0;
int num;

printf("整数を入力してください。:");
scanf("%d",&num);

for (i = 0; i < num; i++){
printf("%d", i);
if ( i <= 10 ){
i = 0;
}
}
putchar('\n');

return(0);
}

A 回答 (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);
}

でいいと思います。
    • good
    • 0
この回答へのお礼

回答していただき有難うございます。
・・・・(i+1)%10); とは凄い。いまの私には、全く思いつきません。
すごく勉強になりました。
またよろしくお願いします。

お礼日時:2007/08/01 16:57

>現在のソースコードでは10以上の入力があった場合、


>無限ループに陥っているようです。
見間違えですね。。。
入力は2以上で無限ループのようです。
    • good
    • 0

>表示されません。


表示されないとは、全くでないということでしょうか?
症状は詳しく書くようにしてください。

>1234567890123456789012345
としたいとの事ですが、全部半角数字で良いでしょうか?
全角と半角では少し違ってきます。

ここからは半角の前提で書きます。
現在のソースコードでは10以上の入力があった場合、
無限ループに陥っているようです。
今回は表示する数字と、表示する回数は違っているので
別に表示する用の変数を用意しましょう。
そして表示は1からなので、一応1で初期化しておきます。
(後からやってもかまいません。)
int output = 1;

そして、出力する数字は0-9までですので、
outputが10以上ならoutputを0に戻します。
if( output>=10 ){
 output=0;
}

そしてこれを、num回数分1加算しながら、
表示していきます。
printf("%d", output++ );

貼り付けたソースコードと
合せて参考にしてみてください。
    • good
    • 0
この回答へのお礼

回答していただき有難うございます。
質問の内容がもっと細かくすることができず、すみませんでした。
とても参考になりました。またよろしくお願いします。

お礼日時:2007/08/01 16:54

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