mod C的问题

mod C的问题,c,math,division,C,Math,Division,我刚开始做代码力问题,我从问题4-A(西瓜)开始,在这个问题中,给定整数x公斤数,如果你把西瓜分成两半,每个西瓜的公斤数都是偶数,如果不是“否”,程序会打印“是”。 我这里的问题是,当输入为5时,我得到“是”,它应该是“否” 这是我的密码: #include <stdio.h> int main (int x) { if((x/2) % 2 == 0) { printf("YES"); }else { printf("NO");

我刚开始做代码力问题,我从问题4-A(西瓜)开始,在这个问题中,给定整数x公斤数,如果你把西瓜分成两半,每个西瓜的公斤数都是偶数,如果不是“否”,程序会打印“是”。 我这里的问题是,当输入为5时,我得到“是”,它应该是“否” 这是我的密码:

#include <stdio.h>
int main (int x) {
    if((x/2) % 2 == 0) {
        printf("YES");
    }else {
        printf("NO");
    }
    return 0;
}
#包括
int main(int x){
如果((x/2)%2==0){
printf(“是”);
}否则{
printf(“否”);
}
返回0;
}
这个条件就是为什么
5
会得到
yes
,因为
5/2
2
(因为它是int)而
2%2
0

这就行了-

if(x%2==0)

因为参数是整数,所以余数的除法将被保留。也就是说:5/2将导致2。那么2模2会给你一个零。您应该在“if”语句中添加x%2。因此,5%2将给你一个与零不同的“1”,因为你是用整数执行运算,
(5/2)=2
,因此你得到的输出是“是”。
如果条件为真,请尝试此代码


,这将意味着两半也相等。

问题与
mod
无关,而是与参数传递有关

int main (int x) {
    if(x % 4 == 0) {
        printf("YES");
    }else {
        printf("NO");
    }
    return 0;
}
main的典型原型是

int main(int argument_count, char *arg_list[], ...);
调用
my_exe 5
会将第一个参数
x
(参数\u计数)设置为2,并将下一个未使用的参数设置为2

arg_list[0] = "my_exe",  // the first (0th) argument is the executable name
arg_list[1] = "5"        // rest of parameters as arrays of chars
调用
my_exe
而不使用参数集
x=1
给出
YES


另外,如果参数
x
是一个十进制值为53(0x35)的字符
'5'
,则结果是
YES
。这将是非常非常规的行为,但在某些未公开的IDE或编码框架中肯定是可能的。

Er。。。你打算怎样把你的论点传递给你的
main
函数?那是怎样到达那里的?如何将
x
设置为
5
?我对那些声称只执行
x%2==0
作为测试的答案感到有些惊讶。这不能满足那个问题的要求。甜瓜必须是(a)偶数公斤,和(b)重量超过2公斤。任何大于2的偶数都可以分成两个偶数(通常在多分区配置中)。
(x/2)%2
相当于
x&0x2
。要将可除性除以4,请使用
x%4
instead@L被四整除也不会减少它。10是问题的有效权重。它可以分为两部分,6和4,它们都是偶数。问题中没有任何内容表明两件物品的分割数必须相同。如果邮报上有这篇文章,它可能会很方便。或者你是说它应该是
(x/4)%2
?他想要被4整除,而不是2,因为被2整除后仍然是一个偶数变化
printf(“是”)至打印F(“是%d”,x)
arg_list[0] = "my_exe",  // the first (0th) argument is the executable name
arg_list[1] = "5"        // rest of parameters as arrays of chars