Другие языки программирования и технологии

Программирование на си

дан порядковый номер дня месяца, вывести на экран количество дней оставшихся до конца месяца
#include<stdio.h>

int daysLeft(int monthNumber, int dayNumber)
{
int daysInMonth = 0;
switch (monthNumber)
{
case 2: daysInMonth = 28; break;
case 1: case 3: case 5: case 7: case 8: case 10:
case 12: daysInMonth = 31; break;
case 4: case 6: case 9:
case 11: daysInMonth = 30; break;
default: return -1;
}
return daysInMonth - dayNumber;
}

int main()
{
int monthNumber, dayNumber;

printf("Enter number of month (1 - 12): ");
scanf("%d", &monthNumber);
printf("Enter current day (1 - 31): ");
scanf("%d", &dayNumber);

int days = daysLeft(monthNumber, dayNumber);
if (days < 0) printf("Incorrect number of month!");
else printf("Days are left: %d", days);
return 0;
}
АК
Алексей Куликовский
1 530
Лучший ответ
Жека Дробышев Это на си ++,а мне нужно на си
// Для текущего месяца

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
_Bool is_leap(int year) {
bool result;
if (year % 4 != 0) result = false;
else if (0 == year % 400) result = true;
else if (0 == year % 100) result = false;
else result = true;
return result;
}
int main(void) {
int day;
time_t tt = time(NULL);
struct tm* pt = localtime(&tt);
int months[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (is_leap(pt->tm_year + 1900)) ++months[1];
printf(">>> ");
scanf_s("%i", &day);
printf("<<< %i\n", months[pt->tm_mon] - day);
system("pause");
}
А год - дан? А то вот есть такой месяц - февраль!
Брюханов Петр
Брюханов Петр
84 349
Абилкасым Жарымбет Даже не известно - дан ли месяц? Точно известен только день месяца, а какого месяца - ХеЗ. А ты говоришь "год" ! ☺
Жека Дробышев Там без разницы