在检查变量是否为空或空的行上,我一直非法使用字符。
有人知道为什么会这样吗?
这里的错误点是:
if((fa == "" && fp == "") || (fb == "" && fp == "")){
虽然我之前不知道是什么导致了这个错误。
编辑:
现在更改了代码,错误是函数sinfa的参数太少。
我只想一次传递一个参数给这个函数,这是可能的,还是我必须创建另一个函数来实现这一点,这样我才能单独满足它们?
谢谢您。:)
#include<stdio.h>
#include<conio.h>
#include<math.h>
#define PI 3.14159265359
float sinfa(float num1,float num2)
{
float fc;
float powers;
float rad_angle;
if(num1 != 0){
rad_angle = num1 * (PI / 180.0);
powers = pow(rad_angle,4);
fc = sin(rad_angle)-powers+1;
}else{
rad_angle = num2 * (PI / 180.0);
powers = pow(rad_angle,4);
fc = sin(rad_angle)-powers+1;
}
return (fc);
}
float sinp(float p1)
{
float fop;
float ppowers;
printf("%f",p1);
ppowers = pow(p1,4);
fop = sin(p1)-ppowers+1;
return (fop);
}
float tp(float fa,float fb,int num1,int num2)
{
float p;
float fm2 = fa*num2;
float fm1 = fb*num1;
p = fm2-fm1/fa-fb;
return (p);
}
float main()
{
float num1;
float num2;
float fa;
float fb;
float p1;
float fp;
clrscr();
printf("Enter number 1: \n");
scanf("%f", &num1);
getch();
printf("Enter number 2: \n");
scanf("%f", &num2);
getch();
clrscr();
if((fa == 0 && fp == 0) || (fb == 0 && fp == 0)){
fa = sinfa(num1);
fb = sinfa(num2);
p1 = tp(fa,fb,num1,num2);
fp = sinp(p1);
}else{
if((fa*fp) < 0){
num1 = num1;
num2 = p1;
fa = sinfa(num1);
fb = sinfa(num2);
p1 = tp(fa,fb,num1,num2);
fp = sinp(p1);
}
if((fb*fp)< 0){
printf("\n 2");
getch();
}
}
}
最佳答案
出现错误是因为要将浮点与字符串文本进行比较,即:
if((fa == "")
只能将float与numeric/float文本进行比较,即:
if((fa == 0.0
回想一下,对于诸如float这样的基元类型,没有空/未初始化的概念。相反,它们通常默认为0。
因此,具有以下平均值f的值将是文本0
float f;
关于c - 在C中非法使用浮点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14594749/