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
展开
 我来答
Q_846513147
2013-10-19 · TA获得超过336个赞
知道小有建树答主
回答量:148
采纳率:100%
帮助的人:41.7万
展开全部
#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个都能正常打印出频率,你试试。
追问
是不是说定义了double类型的,我就必须吧输入格式也定义为double类型的呢,为什么呢?
追答
是,你用%f是输入输出保留6位小数,但是电感常见单位uH(10的-6次方)要求很小很小的数,定义了double类型用%lf,定义float用%f。电感的值要非常小,因为表达式中采用的国际标准,电感单位是H,常见的单位是uH,所以要输入很小的值
百度网友9af53fb
2013-10-19 · TA获得超过998个赞
知道小有建树答主
回答量:261
采纳率:100%
帮助的人:90.4万
展开全部
(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))));看看结果
更多追问追答
追问

还是不行,更乱了,没了=-1.#IND00,但全变负数了

原来题目:

追答
#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甚至更小了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式