2012-06-14 3 views
1

Моя программа показывает «это високосный год» для каждого выхода. Пожалуйста, дайте мне знать, где я совершаю ошибку ??Ниже приведена программа моего високосного года. Он показывает LEAP YEAR для каждого выхода

#include<stdio.h> 
#include<conio.h> 

void main() 
{ 
int a; 
clrscr(); 
printf("\n Enter the year : "); 
scanf("%d",a); 

if (a%400 == 0) 
printf("\n It is a leap year"); 

else 
if (a%100 == 0) 
printf("\n It is not a leap year"); 

else 
if (a%4 == 0) 
printf("\n It is a leap year"); 

else 
printf("\n It is not a leap year"); 


getch(); 

}

ответ

4

scanf() функция требует, чтобы вы пройти адрес вашей переменной:

scanf("%d",&a); 
+0

спасибо человеку !!!!!!! !! – rippy

0

измените ваш зсапЕ линия scanf("%d", a); к scanf("%d",&a);. Вам нужно передать адрес a, а не его значение.

0

Вы забыли «&»:

scanf("%d",&a); 

поэтому он всегда возвращает первый же верно, как „а“ не = 0, независимо от того, что вы вводите

+0

Это не 0, хуже - 'a' is * uninitialised * (так как это локальная переменная, а не' static'), поэтому она может содержать что угодно. Совсем не случайно, что данный код не падает. –

+0

true - я могу предположить, что его приравнивание 0 не инициализировано, чтобы избежать сбоя. в этом случае авария на самом деле была бы более полезной !!! –

+0

Наличие '' указывает, что OP может использовать 16-битную реализацию Turbo C, которая, конечно же, не имеет защиты памяти. –

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