-1

ちょっとした演算が必要なプログラムを書いています。

これが私がこれまでに持っているものです:

#include <stdio.h>
int main(void){
    double h, x, n;
    printf("enter h > ");
    scanf("%1f", &h);
    printf("enter x > ");
    scanf("%1f", &x);
    /* here's where I believe I'm encountering an error */
    n = x/h;

    return 0;
}

x = 0.25 で h = 0.01 を入力すると、n = 0.25/0.01 = 25 になるはずです。

私は型キャストを試みました:

n = (float)x/(float)h;

しかし、うまくいきません...

4

4 に答える 4

3

scanf 呼び出しで (数字の 1 です)と書き%1fましたが、double の正しい形式は%lf(小文字の L です) です。

その結果、数値が double に適切に変換されず、適切な結果が期待できません。

于 2012-09-15T17:18:03.633 に答える
1

問題はおそらく scanf によるものです。代わりに fgets を使用することをお勧めします。しかし、試してみてください:

int main(void){
    float h, x, n;
    printf("enter h > ");
    scanf("%f", &h);
    getchar();
    printf("enter x > ");
    getchar();
    scanf("%f", &x);

    n = x/h;

    return 0;
}
于 2012-09-15T17:10:34.120 に答える
0

その理由は、h、x、n を double として宣言し、それを float に代入したためです。変数宣言で float を使用してみてください

#include <stdio.h>
int main(void){
float h, x, n;
printf("enter h > ");
scanf("%f", &h);
printf("enter x > ");
scanf("%f", &x);

n = x/h;
printf("%f",n);
return 0;

}

于 2012-09-15T17:17:08.863 に答える
0

私のコメントを参照してください。l入力を読み取ろうとするときは、修飾子を指定する必要がありますdouble

#include <stdio.h>

inline int flush() {
  return fflush(stdout);
}

int main() {
  double x, h, n;

  printf("enter h> ");
  flush();
  scanf("%lf", &h);

  printf("enter x> ");
  flush();
  scanf("%lf", &x);

  n = x / h;
  printf("n: %lf\n", n);
}
于 2012-09-15T17:19:32.683 に答える