質問: 関数を使ったプログラミング プログラミングの勉強をして、詰まってしまいました。 以下のプログラムで間違っている原因を教えてください。 物体を初速度と仰角から水平到達距離を求めるのが目的です。 ビルドするとありえないくらいの大きな数になってしまいます。 よろしくおねがいします。 「 #include #include double hdist( double velocity, double angle){ double a,g,l; a=3.14*angle/180; g=9.8; l=velocity*velocity*sin(2*a)/g; return(l); } int main(void){ double na,nb; puts("値を入力してください。"); printf("初速度 velocity(m/s):"); scanf("%f",&na); printf("仰角 angle 度:"); scanf("%f",&nb); printf("水平到達距離は%.2fmです。", hdist(na,nb)); return (0); } 」
回答: printf("初速度 velocity(m/s):"); scanf("%f",&na); printf("仰角 angle 度:"); scanf("%f",&nb); を、以下のようにする。 printf("初速度 velocity(m/s):"); scanf("%lf",&na); printf("仰角 angle 度:"); scanf("%lf",&nb); %fでは、引数は、floatのアドレスと仮定されるが、実際には、naもnbもdoubleなので。