• 締切済み

C言語初心者です。

#include <stdio.h> int main() { int b[100]; int i, n; int a, r, data; int count=0; printf("Please input two integers:"); fflush(0); scanf("%d %d", &a, &r); if(a<=0 || r<=1){ printf("Error\n"); } else{ for(n=0; b[n]<=80.0; n++){ if(n==0){ b[0]=0; count++; } else { for(i=0; i<=n-1; i++){ data*=r; } b[n]=a*data; printf("%d ", b[n]); count++; } } printf("\n"); for(; count>0; count--){ printf("%d ", b[count]); } } return 0; } windows8でeclipseを使ってC言語を書いてます。 eclipse上だと何もエラーが表示されてないのですが、実行し、 Please input two integers: と表示された後、適当な数字2つを入力しても何も反応しません。 稚拙な質問ですいません。どなたか原因を教えてください。

みんなの回答

回答No.2

そもそもb[0]が初期化されていないのに > for(n=0; b[n]<=80.0; n++){ で、ループ条件としてb[0]が80以下かどうかを見ていますから、 たいていはb[0]に入っているゴミ値が80より大きい値に なっていて、forループ内を一度も実行せずに終了になると思います。 配列bはint型の配列なのに80.0と小数点付きの値で 比較しているのも気持ち悪いです。 何をしたいのプログラムなのか説明がないので、 どう直すべきかはわかりません。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

何をしたいプログラムか不明なので、どこが意図と違うのかも不明です。 10 10 を入力すると 32679 と表示されました。 形式的にチェックできる範囲で言うと、変数dataの初期値が与えられていません。 あと、scanfの戻り値をチェックしていないのも問題ですが、まあ、これは本質では無いです。

関連するQ&A