自定义求平方根练习函数!菜鸟请教

voidkf(){inti;floats,da;clrscr();for(i=1;i<=M;i++){s=random(99)+1;printf("%f的平方根是:",s... void kf()
{int i;float s,da;
clrscr();
for(i=1;i<=M;i++)
{s=random(99)+1;
printf("%f的平方根是:",s);
scanf("%f",&da);
if(da==sqrt(s)) printf("正确\n");
else
{printf("错了!请再输入一次");
scanf("%f",&da);
if(da==sqrt(s)) printf("正确\n");
else printf("错了!正确的答案是%f\n",sqrt(s));}
}
printf("\n求平方根练习做完了,按任意键返回菜单屏幕......");
getch();

请问为什么我输入了正确的答案,还是执行"错了!在输入一次"呀? 菜鸟请教! 谢谢!
展开
1812573723
2012-03-28 · TA获得超过2355个赞
知道小有建树答主
回答量:943
采纳率:88%
帮助的人:980万
展开全部
这个……电脑的精确度很高,所以你用等于进行判断一定会错,因为你的结果跟电脑的结果不可能完全相等,你应该判断误差小于一个数值,比如(fabs(da-sqrt(s))<=0.01),或者可以把0.01改成你觉得合适的数值。
追问
你是说我输入的答案表面上和它输入的是一样的,实质上不行等的?你这个判断误差的函数我还没学过!  谢谢!基本明白了! 不是其他的错误!
追答
举个例子,比如你求根号2,可能顶多算到1.41421,但是电脑会算到1.414213562373甚至更长,(虽然可能只显示1.414214)然后这两个数是不相等的,但是你可以判断这两个数非常接近,也就是说这两个数的差的绝对值很小,fabs就是求绝对值,你可以自己设置当差的绝对值小于多少时就认为是正确的,这样就可以了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式