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