一直改都拿不到满分,还有什么不足的地方吗?
#include <stdio.h>
#include <math.h>
int main() {
int a,
b,
c;
scanf("%d %d %d", &a, &b, &c);
if(a + b > c && a + c > b && b + c > a && a == b && b == c) {
printf("yes\n");
}
else
{
printf("no\n");
}
if(a + b > c && a + c > b && b + c > a && ((a == b && a != c) || (a == c && a != b) || (b == c && b != a)) || (a == b && a == c)) {
printf("yes\n");
}
else
{
printf("no\n");
}
if(a+b > c && a+c > b && b+c > a) {
printf("yes\n");
}
else
{
printf("no\n");
}
return 0;
}
仅供参考,谢谢!
#include <stdio.h>
int main(void)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
if (a + b > c && a + c > b && b + c > a)
{
if (a == b && b == c)
{
puts("yes");
}
else
puts("no");
if (!(a != b && b != c && a != c))
{
puts("yes");
}
else
puts("no");
puts("yes");
}
else
puts("no\nno\nno");
return 0;
}
【以下回答由 GPT 生成】
首先,代码中已经给出的注释已经足够明确了。但是,还可以考虑以下进一步的优化方面:
将变量的声明和输入操作放在代码的开头部分,可以提高代码的可读性。这样读代码的人可以一目了然地了解这个程序要做什么。
可以将判断是否为等边三角形的部分更改为更直观的写法。例如,可以使用 (a == b && b == c)
来判断是否为等边三角形。
可以将判断是否为等腰三角形和一般三角形的部分合并为一个判断条件。使用 (a + b > c && a + c > b && b + c > a)
来判断是否为合法的三角形,然后在这个条件下再进行更细致的判断,例如判断是否为等腰三角形和等边三角形。
可以使用函数封装代码,提高代码的可复用性和可维护性。例如,可以将判断是否为合法的三角形和判断三角形类型的代码封装为两个独立的函数,分别提供判断结果和输出结果。
优化后的代码如下:
#include <stdio.h>
#include <math.h>
// 判断是否为合法的三角形
int isTriangle(int a, int b, int c) {
return (a + b > c && a + c > b && b + c > a);
}
// 输出三角形的类型
void outputTriangleType(int a, int b, int c) {
if (a == b && b == c) {
printf("等边三角形\n");
}
else if (a == b || b == c || a == c) {
printf("等腰三角形\n");
}
else {
printf("一般三角形\n");
}
}
int main() {
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
// 判断是否为合法的三角形
if (isTriangle(a, b, c)) {
outputTriangleType(a, b, c);
}
else {
printf("不是三角形\n");
}
return 0;
}
以上是我对给出代码的进一步优化,希望对你有帮助。如果还有其他问题,请随时提问。
【相关推荐】