所以我有一个非常简单的代码来计算用户输入的声音速度,当我运行程序时,我得到一个答案,但它不正确,我得到错误
'第14行:赋值在没有强制转换的情况下从指针生成整数。
我不知道这意味着什么,并尝试调整我的指针和功能来尝试解决这个问题。任何帮助,将不胜感激。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int SpeedofSound(int t,int Answer);
int t,Answer;
int *pAnswer;
int main(void)
{
printf("Please enter a Temp (Fahrenheit) to calculate the speed of sound.\n");
scanf(" %d", &t);
Answer = SpeedofSound;
printf("At Temp %d, the Speed of sound is %d feet/second.", t, Answer);
return 0;
}
int SpeedofSound(int t,int Answer)
{
*pAnswer = 1086 * sqrt(((5 * t) + 297)/247);
Answer = *pAnswer;
return (Answer);
}
答案 0 :(得分:0)
这是你的问题:
Answer = SpeedofSound;
这不是函数调用,而是赋值。您将函数的地址分配给名为Answer的整数变量。这样做:
Answer = SpeedofSound(t);
并重写函数以获取一个参数。丢掉pAnswer的东西。祝你好运
答案 1 :(得分:0)
以下是编译器抱怨的内容:
Answer = SpeedofSound;
你实际上并没有调用 SpeedofSound
函数 - 因为你离开了()
函数调用运算符,编译器会将SpeedofSound
作为指针指向功能。因此,在上面的行中,您尝试将指针值分配给int
,如果没有强制转换,则不允许这样做。
您的代码中有很多内容完全没有必要:您可以将其重写为
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int SpeedofSound(int t);
int main(void)
{
int t;
int Answer;
printf("Please enter a Temp (Fahrenheit) to calculate the speed of sound.\n");
scanf(" %d", &t);
Answer = SpeedofSound( t );
printf("At Temp %d, the Speed of sound is %d feet/second.", t, Answer);
return 0;
}
int SpeedofSound(int t)
{
return 1086 * sqrt(((5 * t) + 297)/247);
}
您不需要任何指针或全局变量。您所需要的只是t
和Answer
。
注意整数运算给出整数结果;即1/2 == 0
。您可能希望使用doubles
进行输入和计算:
double SpeedofSound( double t )
{
return 1086.0 * sqrt(((5.0 * t) + 297.0)/247.0);
}
int main( void )
{
double t;
double Answer;
...
}
您还需要在%d
和%f
来电中将printf
替换为scanf
。