#c #days
#c #дни
Вопрос:
#include<stdio.h>//Its not showing the correct result//
int main()
{
int y,m,d;
scanf("%d",amp;d);
y=0;
m=0;
y=d/365;
d=d%365;
m=d/30;
d=d%30;
printf("%d ano(s)n",amp;y);
printf("%d mes(es)n",amp;m);
printf("%d dia(s)n",amp;d);
return 0;
}
Комментарии:
1. Не могли бы вы, пожалуйста, привести пример ввода, что вы ожидаете, что программа будет выводить, и что она на самом деле выводит вместо этого?
2. Когда я пытаюсь скомпилировать и запустить этот код самостоятельно, он указывает, что
printf
takes со строкой"%d"
формата принимаетint
s в качестве аргументов, а неint*
указателей. Удалениеamp;
printf
инструкций from должно помочь. (Хотя, если ваша проблема заключается, например, в неправильной обработке високосных лет или месяцев длиной 28 или 31 день, это, очевидно, не решит ее.)3. Из любопытства, поскольку я постоянно сталкиваюсь со своими кварцевыми наручными часами с датами, можно ли учесть разницу в 30-31 день, не зная, какой это месяц?
4. @APJo Время для часов, синхронизированных с источником времени, возможно, с WWV ? или GPS? 🙂
5. @chux-RestorateMonica мой — хороший старый анализ, никаких сложных вычислений вообще, просто механическая точность — нуждается в повторной настройке в конце каждого месяца, у которого меньше 31 дня XD … это «прекрасные часы», поэтому я ухмыляюсь и терплю. Другой мой анализ фактически также отслеживает месяц и луну механически, поэтому он настраивается сам 🙂
Ответ №1:
преобразование не показывает правильный результат
m=d/30;
имеет смысл, если во всех месяцах было 30 дней.
Они этого не делают, если не используют другой подобный календарь.
Код должен учитывать различное количество дней в месяц и високосные годы.
Экономьте время. Включите все предупреждения компилятора. Выведите значение, а не адрес.
// printf("%d ano(s)n",amp;y);
// printf("%d mes(es)n",amp;m);
// printf("%d dia(s)n",amp;d);
printf("%d ano(s)n", y);
printf("%d mes(es)n", m);
printf("%d dia(s)n", d);
Комментарии:
1. возможно, Op перепутал способ
scanf()
приема аргументов сprintf()
… со мной тоже однажды случилось 🙂2. @APJo Я тоже так подозреваю, но хорошо работающий компилятор дает более быструю обратную связь, чем SO, и, надеюсь, OP попытается повысить производительность.
3. Проблема решена. Я новичок в программировании. предложите мне лучший компилятор. Я использую codeblocks. Но это не дало отзывов об этой проблеме.
4. @MdMehediHasan поскольку Code::Blocks использует MinGW, вы можете просто добавить
-Wall -Wextra -pedantic -Wshadow
в качестве опций, и это будет охватывать практически все предупреждения. Прочитайте и поймите каждое предупреждение и исправьте его. Не принимайте код, пока он не будет скомпилирован без предупреждения. Вы можете узнать из своего компилятора столько же, сколько и из любой хорошей книги.