gpt4 book ai didi

c - 有没有更好的方法来根据多重整除规则检查整数而不嵌套那么多 if-elses?

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:57 25 4
gpt4 key购买 nike

问题:
编写一个程序来计算整数 x 的分数。如果 x 为零或负数,则得分为 −100。否则我们从 0 开始。如果 x 是 3 的倍数,则将分数加 3。之后,如果 x 是 5 的倍数,则将分数加 5。之后,如果 x 在 100 和 200 之间(含),则将分数加 50,否则从分数中减去 50。现在打印分数。

我的问题:
下面的解决方案有效,但我找不到更简洁的方法来编写解决问题的程序。我是 C 的新手,但我的理解是 Switch 语句 无法进行逻辑比较,并且一旦满足 If 语句,就不会再进行检查.

有没有办法在不重复代码块的情况下根据多个规则检查整数? - 谢谢。

我的解决方案:

#include <stdio.h>

int main()
{
int x;
int score;

scanf("%d", &x);

if (x <= 0){
score = -100;
}
else {
score = 0;

if (x % 3 == 0 && x % 5 == 0) {
score += 8;
if (x >= 100 && x <= 200) {
score += 50;
}
else {
score -= 50;
}
}

else if (x % 3 == 0) {
score += 3;
if (x >= 100 && x <= 200) {
score += 50;
}
else {
score -= 50;
}
}

else if (x % 5 == 0) {
score += 5;
if (x >= 100 && x <= 200) {
score += 50;
}
else {
score -= 50;
}
}

else if (x >= 100 && x <= 200) {
score += 50;
}

else {
score -= 50;
}
}

printf("%d", score);
return 0;
}

最佳答案

您所做的超出了必要:必须始终完成所有 3 个条件检查,因此无需在链式 if-else 语句中嵌套 if 语句。

当我们以稍微不同的方式格式化您的问题时,解决方案实际上更加清晰:

Otherwise we start with 0. If the x is a multiple of 3,     add 3 to the score. After that if x is a multiple of 5,     add 5 to the score. After that if x is between 100 and 200 (inclusive),     add 50 to the score, else     subtract 50 from the score.

关于c - 有没有更好的方法来根据多重整除规则检查整数而不嵌套那么多 if-elses?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51941877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com