2014-10-02 9 views
-5

Эта программа правильно печатает ли число четным или нечетным ...Что делает операция остатка (x% y), когда x <y?

#include <stdio.h> 
int main(void) 
{ 
    int n; 
    printf("Please enter a number:"); 
    scanf("%d", &n); 

    if(n % 2 == 0) 
     printf("%d is even", n); 
    else 
     printf("%d is odd",n); 

    return 0; 
} 

Я не понимаю, как n % 2 может дать значимый результат при n меньше, чем два. % - операция остатка, правильно? Если n меньше двух, как вы можете разделить его на два?

+1

Как вы думаете, что произойдет, если входное значение меньше 2? –

+0

'n% 2' возвращает остальную часть деления на два ... так что четное число всегда делится на два (т. Е. Остаток 0), в то время как деление нечетного числа всегда оставляет остаток 1. – isedev

+4

Пожалуйста, объясните, как вы понимаете' 3% 2', но не '1% 2'. –

ответ

1

Я не могу понять логику n% 2 == 0. Если пользователь вводит значение меньше 2. Затем, как он дает правильный ответ?

Оператор % выполняет операцию модуля (или остатка). Остальная часть деления числа на 2 (когда это число меньше 2) является самим номером (с коэффициентом 0). Например, один, разделенный на два, имеет коэффициент 0 и остаток от 1, так что 1% 2 = 1.

+0

Как вы доказываете, что 1% 2 = 1? –

+0

@AsifNaeem Я не доказываю это, я утверждаю это. Чтобы доказать, что это классная математика; сколько раз до 2 переходить в 1? 0. И 0 * 2 равно 0, а 1 - 0 равно 1. Поэтому остаток 1/2 равен 1. QED. –

Смежные вопросы