Почему мой код високосного года в C не работает? - PullRequest
0 голосов
/ 23 декабря 2018

Когда я вхожу в год, программа не выполняется

Я подожду, когда эта программа будет интересной.Но идентификатор не будет выполнен.Когда я нажимаю ввод, он содержит разрыв строки, но не работает.

#include<stdio.h>
#include<math.h>

int main(){

    int year;
    scanf("%d\n",&year);

    if(year%400==0||(year%100==0&&year%4==0))

        printf("%d is Leap Year",year);

    else
        printf("%d Not Leap Year",year);

    return 0;
}

Пример: Sample

1 Ответ

0 голосов
/ 23 декабря 2018

scanf("%d\n",&year); означает: читать необязательные пробелы (любое количество), за которыми следует целое число (%d), за которым следует любое количество пробелов (\n).

Таким образом, после ввода [SPACE][TAB][ENTER] функция потребляет эти 3 символа и все еще «застревает» в первом чтении пробела.

Затем вы набираете [SPACE][TAB]2000[ENTER], и функция использует эти 7 символов, присваивает 2000 к year и застревает во втором чтении пробела.
Введите еще несколько [SPACE][TAB][ENTER], и этовсе еще застряли".

Наконец, введите [SPACE]"Z"[ENTER], чтобы функция использовала этот последний пробел, пока не достигнет "Z", который (вместе с [ENTER]) остается неиспользованным во входном буфере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...