c语言编程日历问题,做C语言日历程序,要求从给的错误程序改写,求高手赐教!...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include “genlib.h”

#include “simpio.h”

#define Sunday 0

#define Monday 1

#define Tuesday 2

#define Wednesday 3

#define Thursday 4

#define Friday 5

#define Saturday 6

void GiveInstructions (void);

int GetYearFromUser (void);

void Printcalendar (int year);

void PrintCalendarMonth (int month, int year);

void IndentFirstLine (int weekday);

int Monthdays (int month, int year);

int FirstDayOfMonth (int month, int year);

string MonthName (int month);

int IsLeapYear (int year);

main()

{

int year;

GiveInstructions();

year = GetYearFromUser();

PrintCalendar (year);

}

void GiveInstructions(void)

{

printf(“This program Displays a calendar for a full\n”);

printf(“year. The year must not be before 1900.\n”);

}

int GetYearFromUser (void)

{

int year;

while (TRUE);

{

printf (“Which year? “);

year = GetInteger();

if (year >= 1900) return (year);

printf(“The year must be at least 1900.\n”);

}

}

void PrintCalendar (int year)

{

int month;

for (month = 1; month <= 12; month++);

{

PrintCalendarMonth (month, year);

printf (“\n”);

}

}

void PrintCalendarMonth (int month, int year)

{

int weekday, nDays, day;

printf(“ %s %d\n”, MonthName (month), year);

printf(“ Su Mo Tu We Th Fr Sa\n”);

nDays = Monthdays (month, year);

weekday = FirstDayOfMonth (month, year);

IndentFirstLine (weekday);

for (day = 1; day <= nDays; day++)

{

printf(“ %2d”, day);

if (weekday == Saturday) printf (“\n”);

weekday = (weekday + 1) % 7;

}

if (weekday != Sunday) printf (“\n”);

}

void IndentFirstline (int weekday)

{

int i;

for (i = 0; i < weekday; i++);

{

printf (“ ”);

}

}

int MonthDays (int month, int year)

{

switch (month)

{

case 2:if (IsLeapYear (year)) return (29); return (28);

case 4: case 6: case 9: case 11: return (30);

default:return (31);

}

}

int FitstDayOfMonth (int month, int year)

{

int weekday, i;

weekday = Monday;

for (i =1900; i < year; i++);

{

weekday = (weekday + 365) %7;

if (IsLeapYear (i)) weekday = (weekday + 1) % 7;

}

for (i = 1; i < month; i++) ;

{

weekday = (weekday + MonthDays (i, year)) % 7;

}

return (weekday);

}

MonthName (int month)

{

switch (month)

{

case 1: return (“January”);

case 2: return (“February”);

case 3: return (“March”);

case 4: return (“April”);

case 5: return (“May”);

case 6: return (“June”);

case 7: return (“July”);

case 8: return (“August”);

case 9: return (“September”);

case 10: return (“October”);

case 11: return (“November”);

case 12: return (“December”);

efault: return (“Illegal month”);

}

}

int IsLeapYear (int Year)

{排列有点问题,改了下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值