C语言出现了-1.#IND00的问题
#include<stdio.h>#include<math.h>voidmain(){doublel,r,f;doublec;printf("电感\n");scanf(...
#include<stdio.h>
#include<math.h>
void main()
{
double l,r,f;
double c;
printf("电感\n");
scanf("%f",&l);
printf("电阻\n");
scanf("%f",&r);
for(c=0.01;c<=0.1;c+=0.01)
{
f=sqrt(1/(l*c)-pow(r,2)/(4*pow(c,2)));
printf("电容=%lf 频率=%lf\n",c,f);
}
}
输出后频率就一直=-1.#IND00 展开
#include<math.h>
void main()
{
double l,r,f;
double c;
printf("电感\n");
scanf("%f",&l);
printf("电阻\n");
scanf("%f",&r);
for(c=0.01;c<=0.1;c+=0.01)
{
f=sqrt(1/(l*c)-pow(r,2)/(4*pow(c,2)));
printf("电容=%lf 频率=%lf\n",c,f);
}
}
输出后频率就一直=-1.#IND00 展开
展开全部
#include<stdio.h>
#include<math.h>
void main()
{
double l,r,f;
double c;
printf("电感\n");
scanf("%lf",&l);
printf("电阻\n");
scanf("%lf",&r);
for(c=0.01;c<=0.1;c+=0.01)
{ if (1/(l*c)-pow(r,2)/(4*pow(c,2))>=0)
{f=sqrt(1/(l*c)-pow(r,2)/(4*pow(c,2)));
printf("电容=%lf 频率=%lf\n",c,f);}
else
{printf("error!\n");}
}
}
加个if语句判断一下根号下面是否大于0,大于零就执行开根号,小于零就打印error!,运行程序电感输入0.00001,电阻输入90,结果是前两个打印error,后面的8个都能正常打印出频率,你试试。
#include<math.h>
void main()
{
double l,r,f;
double c;
printf("电感\n");
scanf("%lf",&l);
printf("电阻\n");
scanf("%lf",&r);
for(c=0.01;c<=0.1;c+=0.01)
{ if (1/(l*c)-pow(r,2)/(4*pow(c,2))>=0)
{f=sqrt(1/(l*c)-pow(r,2)/(4*pow(c,2)));
printf("电容=%lf 频率=%lf\n",c,f);}
else
{printf("error!\n");}
}
}
加个if语句判断一下根号下面是否大于0,大于零就执行开根号,小于零就打印error!,运行程序电感输入0.00001,电阻输入90,结果是前两个打印error,后面的8个都能正常打印出频率,你试试。
追问
是不是说定义了double类型的,我就必须吧输入格式也定义为double类型的呢,为什么呢?
追答
是,你用%f是输入输出保留6位小数,但是电感常见单位uH(10的-6次方)要求很小很小的数,定义了double类型用%lf,定义float用%f。电感的值要非常小,因为表达式中采用的国际标准,电感单位是H,常见的单位是uH,所以要输入很小的值
展开全部
(1/(l*c)-pow(r,2)/(4*pow(c,2)))
我试验了几个数字,结果为负值,不能开sqrt,所以结果是
输出后频率就一直=-1.#IND00
不知道原来公式是什么,发出来,修改一下,应该可以了
printf("=%lf==\n",(1/(l*c)-pow(r,2)/(4*pow(c,2))));看看结果
我试验了几个数字,结果为负值,不能开sqrt,所以结果是
输出后频率就一直=-1.#IND00
不知道原来公式是什么,发出来,修改一下,应该可以了
printf("=%lf==\n",(1/(l*c)-pow(r,2)/(4*pow(c,2))));看看结果
更多追问追答
追答
#include
#include
#include
void main()
{
double l,r,f;
double c,d;
printf("电感\n");
scanf("%lf",&l);
printf("电阻\n");
scanf("%lf",&r);
printf("电感=%lf\t电阻=%lf\t==\n",l,r);
for(c=0.01;c<=0.1;c+=0.01)
{
printf("电感=%lf\t电阻=%lf\t电容=%lf\t\n",l,r,c);
d=(1/(l*c))-(pow(r,2)/(4*pow(c,2)));
printf("1/(l*c)=%lf\tpow(r,2)=%lf\t(4*pow(c,2))=%lf\t==\n",1/(l*c),pow(r,2),(4*pow(c,2)));
printf("d=%lf==\n",d);
system("pause");
f=sqrt(d);
printf("电容=%lf 频率=%lf\n",c,f);
system("pause");
}
}
主要修改了scanf("%lf",&l); 和scanf("%lf",&r);, "%f"改成了"%lf"
运算通过,似乎第一个输入的数要相当小,我都是0.0001甚至更小了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询