【发布时间】:2014-08-01 01:15:14
【问题描述】:
问题是这样的:
编写一个程序,读取两个三角形的三个角和三个边,并打印它们是否全等。我们不知道用户想要执行多少次。
#include <stdio.h>
#include <conio.h>
int main()
{
float l1,l2,l3,l4,l5,l6;
float a1,a2,a3,a4,a5,a6;
char ans;
int d=1;
while(d<=2)
{
printf("\nIntroduce the sides of triangle %d:",d);
scanf("%f %f %f",&l1,&l2,&l3);
printf("Introduce the angles of triangle %d:",d);
scanf("%f %f %f",&a1,&a2,&a3);
{
if(l1==l4 &&l2==l5 && l3==l6 && a1==a4 && a2==a5 && a3==a6)
printf("\n\tCongruent");
else
printf("\n\tNot congruent");
}
}
getch();
return 0;
}
那是我的代码,但开始时有问题,因为我一旦结束角度提示,程序就完成并说它们不全等,没有要求三角形编号 2,因此我没有完成“问的是用户想要做其他三角形的事情”。我知道我的代码有些错误,但我不知道在哪里。
感谢所有帮助!
【问题讨论】:
-
在浮点数中比较相等性不会很好!
-
调试器将帮助您逐步完成代码。一个程序是否有效并不是什么神奇的事情。 Visual Studio 有一个很棒的调试器。只需一次按 F10 即可。
-
@bathsheba 通常是正确的,不建议使用
==比较浮点数,因为会出现截断和舍入错误。不过,只要您不对浮点数进行任何算术运算,大多数合理的输入都可以在这种情况下使用。 -
没有l4、l5和l6的赋值。也不需要检查所有边和三角形,只需 3 个相等的边或相等的边角边或角边角就足够了
-
如果您认为下面给出的任何答案都解决了您的问题,请考虑接受它,以便它可以浮在上面,让其他读者受益。
标签: c loops if-statement while-loop