测试一个数字是否均匀地进入 6?
Testing if a number goes evenly into 6?
我正在尝试查看包括负数在内的两个输入数字(整数)是否均匀地进入 6(余数为 0)。这是我正在尝试的代码。
if((in1)%6 == 0 && (in2)%6 == 0){
printf("Divisible: both\n");
}
else if((in1)%6 == 0 && (in2)%6 > 0){
printf("Divisible: only %i\n",in1);
}
else if((in1)%6 > 0 && (in2)%6 == 0){
printf("Divisible: only %i\n",in2);
}
else{
printf("Divisible: neither\n");}
这适用于所有正整数,但对于任何负数,打印的代码总是 "Divisible: neither" 任何关于如何显示可被 6 整除且余数为 0 的正数和负数的帮助都会非常有帮助
您可以使用 != 0
而不是 > 0
。在 C 中,负数的 %
将给出负结果(或零)。
这是因为自 C99 以来 a / b
被定义为向零截断(在 C90 中它是实现定义的)。 a % b
定义为 a - (a / b) * b
.
请注意,您实际上根本不需要此测试;如果满足 if
情况,您可以依赖 if...else
不进入 else
情况的行为,例如:
if ( in1 % 6 == 0 && in2 % 6 == 0 )
{
// ...
}
else if ( in1 % 6 == 0 )
{
// would not reach here if in2 % 6 == 0
}
else if ( in2 % 6 == 0 )
{
// would not reach here if in1 % 6 == 0
}
else
另一个考虑,而不是强制代码测试数字 3 次,重写以仅对数字执行 2 次测试。
if (in1 % 6) {
if (in2 % 6) {
printf("Divisible: both\n");
} else {
printf("Divisible: only %i\n",in1);
}
} else {
if (in2 % 6) {
printf("Divisible: only %i\n",in2);
} else {
printf("Divisible: neither\n");}
}
}
我正在尝试查看包括负数在内的两个输入数字(整数)是否均匀地进入 6(余数为 0)。这是我正在尝试的代码。
if((in1)%6 == 0 && (in2)%6 == 0){
printf("Divisible: both\n");
}
else if((in1)%6 == 0 && (in2)%6 > 0){
printf("Divisible: only %i\n",in1);
}
else if((in1)%6 > 0 && (in2)%6 == 0){
printf("Divisible: only %i\n",in2);
}
else{
printf("Divisible: neither\n");}
这适用于所有正整数,但对于任何负数,打印的代码总是 "Divisible: neither" 任何关于如何显示可被 6 整除且余数为 0 的正数和负数的帮助都会非常有帮助
您可以使用 != 0
而不是 > 0
。在 C 中,负数的 %
将给出负结果(或零)。
这是因为自 C99 以来 a / b
被定义为向零截断(在 C90 中它是实现定义的)。 a % b
定义为 a - (a / b) * b
.
请注意,您实际上根本不需要此测试;如果满足 if
情况,您可以依赖 if...else
不进入 else
情况的行为,例如:
if ( in1 % 6 == 0 && in2 % 6 == 0 )
{
// ...
}
else if ( in1 % 6 == 0 )
{
// would not reach here if in2 % 6 == 0
}
else if ( in2 % 6 == 0 )
{
// would not reach here if in1 % 6 == 0
}
else
另一个考虑,而不是强制代码测试数字 3 次,重写以仅对数字执行 2 次测试。
if (in1 % 6) {
if (in2 % 6) {
printf("Divisible: both\n");
} else {
printf("Divisible: only %i\n",in1);
}
} else {
if (in2 % 6) {
printf("Divisible: only %i\n",in2);
} else {
printf("Divisible: neither\n");}
}
}