C语言程序设计 万年历查询程序。

C语言程序设计 万年历查询程序。,第1张

实验名称:万年历的查询及打印

内容:设计一个查询并打印万年历的程序。

步骤:

1.

画出程序流程图;

2.

编写程序;

3.

调试程序,对调试过程中出现的问题进行分析,找出错误的原因并予改正;

4.

写出通过调试并修改正确的原程序。

要求:

1.

程序运行后,首先在屏幕上显示主菜单:

1.

查询某年某月某日是星期

2.

查询某年是否是闰年

3.

打印某年的全年日历

4.

退出

2.

在主菜单中输入1后,显示:

请输入年月日(XXXX,XX,XX)”

运行后输出:XXXX年XX月XX日是星期X,是否继续查询(Y/N)?

如果输入Y,则重新显示

“请输入年月日(XXXX,XX,XX)”,否则回到主菜单。

3.

在主菜单中输入2后,显示:

“请输入要查哪一年?(XXXX)”

运行后输出:XXXX年是(否)是闰年,是否继续查询(Y/N)?

如果输入Y,则重新显示,“请输入要查哪一年?(XXXX)”,否则回到主菜单。

4.

在主菜单中输入3后,显示:

“请输入要打印的年份(XXXX)”

运行后输出XXXX年的日历,格式为:

XXXX

X(月数)

0

1

2

3

4

5

6

S

M

T

W

T

F

S

x

x

x

x

x

x

x

x

x

x

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

X(月数)

0

1

2

3

4

5

6

S

M

T

W

T

F

S

x

x

x

x

x

x

x

xx

 xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

xx

 运行完后显示:“是否继续打印(Y/N)?”

 如果输入Y,则重新显示,“请输入要打印的年份(XXXX)”,否则回到主菜单。

5.

在主菜单中输入4后,显示:“是否要真的退出(Y/N)?”

如果输入Y,结束程序运行,否则重新显示主菜单。

提示:

1

闰年计算:满足下列二者之一,是闰年:

能被4整除,但不能被100整除;

能被4整除,且能被400整除。

2闰年的二月是29天,平年的二月是28天

3星期几的计算:

S=X-1+(X-1)/4+(X-1)/100+(X-1)/400+C

X是年份,C是该年从元旦开始到到这一日的天数。

S/7的余数既是星期数

例1:1982年12月26日

由于1982年不是闰年(不能被4整除),所以该年的二月是28天。

C=31+28+31+30+31+30+31+31+30+31+30+26=360

(1月到11月的天数+12月的实际天数)

S=1982-1+(1982-1)/4+(1982-1)/100+(1982-1)/400+360=28213925

S/7=2821/7=403

余数为0,所以该日是星期天。

例2:2000年3月8日

由于2000年是闰年(能被4整除,又能被100和400整除),所以该年的二月是29天。

C=31+29+8=68

(1月到2月的天数+3月的实际天数)

S=2000-1+(2000-1)/4+(2000-1)/100+(2000-1)/400+68=2551757

S/7=2551/7=364

余数为3,所以该日是星期三。

package mycalendar;

import javautil;

class ViewMonth {

int month;

int year;

ViewMonth(final int displayMonth, final int displayYear) {

month = displayMonth;

year = displayYear;

}

private String checkMonth() {

String[] months = {

"1 月" , "2 月" , "3 月",

"4 月" , "5 月" , "6 月",

"7 月" , "8 月" , "9 月",

"10 月" , "11 月" , "12 月"

};

return months[month];

}

private int checkDays() {

int[] numofDays = {

31, 28, 31,

30, 31, 30,

31, 31, 30,

31, 30, 31

};

return numofDays[month];

}

/

使用此方法打印该月的日历

/

void printMonth() {

/ 将该月份起始处的天数留空 /

int initialSpaces = 0;

try {

/ 获取月份名称 /

String monthName = checkMonth();

Systemoutprintln();

Systemoutprintln("\t\t\t " + year + " 年 " + monthName );

Systemoutprintln();

} catch (ArrayIndexOutOfBoundsException ae) {

Systemoutprintln("超出范围 ");

Systemexit(0);

}

GregorianCalendar cal = new GregorianCalendar(year, month, 1);

Systemoutprintln("\t日\t一\t二\t三\t四\t五\t六");

initialSpaces = calget(CalendarDAY_OF_WEEK) - 1;

/ 获取天数 /

int daysInMonth = checkDays();

/ 检查是否为闰年并为二月增加一天 /

if (calisLeapYear(calget(CalendarYEAR)) && month == 1) {

++daysInMonth;

}

for (int ctr = 0; ctr < initialSpaces; ctr++) {

Systemoutprint("\t");

}

for (int ctr = 1; ctr <= daysInMonth; ctr++) {

/ 为单个日期添加空格 /

if (ctr <= 9) {

Systemoutprint(" ");

}

Systemoutprint("\t" + ctr);

/ 检查行的末尾 /

if ((initialSpaces + ctr) % 7 == 0) {

Systemoutprintln();

} else {

Systemoutprint(" ");

}

}

Systemoutprintln();

}

}

class J7上机2 {

protected J7上机2() {

}

public static void main(String[] args) {

int month, year;

if (argslength == 2) {

Systemoutprintln("显示日历");

Systemoutprintln();

int mon = IntegerparseInt(args[0]);

month = mon - 1;

year = IntegerparseInt(args[1]);

} else {

Calendar today = CalendargetInstance();

month = todayget(CalendarMONTH);

year = todayget(CalendarYEAR);

}

ViewMonth mv = new ViewMonth(month, year);

mvprintMonth();

}

}

给你

#include"iostreamh"

#include"iomaniph"

#include"stdlibh"

leapyear(int a)/是否是闰年/

{

if((a%4==0&&a%100!=0)||(a%100==0&&a%400==0))

return (1);

else return (0);

}

int aa[12]={31,28,31,30,31,30,31,31,30,31,30,31};

int cc[12]={31,29,31,30,31,30,31,31,30,31,30,31};

char bb[8][8]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

ww(int a,int b,int c)

{

int n=0,m=0,i,j,k=0;

for(i=1;i {

if(leapyear(i)==1)

m=m+366;

else m=m+365;

}

for(j=1;j {if(leapyear(c)==1) k=k+cc[j-1];

else k=k+aa[j-1];

}

n=(m+k+a)%7;

return n;

}

void yuefen(int m)

{

cout<<"最大天数是:";

if(m==2)

cout< else cout< }

void nianfen(int n)/打印年份的日历/

{

int i,j,k;

if(leapyear(n)==1)

{

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

{

cout< cout<<"月份"< cout<<" 日"<<" 一"<<" 二"<<" 三"<<" 四"<<" 五"<<" 六"< for(i=0;i {

cout< }

for(k=1;k<=cc[j-1];k++)

{

cout< if((ww(1,j,n)+k)%7==0)

cout< }

cout< }

}

else

{

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

{

cout< cout<<"月份"< cout< cout< for(i=0;i {

cout< }

for(k=1;k<=aa[j-1];k++)

{

cout< if((ww(1,j,n)+k)%7==0)

cout< }

cout< }

}

}void main()

{

int n,m;

int day,month ,year;

while(1)

{

cout<<":"< cout<<"1查询某年某月某日是星期几"< <<"2是否为闰年"< <<"3查询某月的最大天数"< <<"4打印某年的全年日历"< <<"5打印某年某月的月历"< <<"6exit"< <<":"< cout<<"请输入要 *** 作的指令:"< cin>>n;

switch(n)

{

case 1:cout<<"请输入要查询的日期:";

cout<<"year:";

cin>>year;

cout< cin>>month;

cout< cin>>day;

cout<<"星期是:";

cout< switch(ww(day,month,year))

{

case 1:cout<<"星期一";break;

case 2:cout<<"星期二";break;

case 3:cout<<"星期三";break;

case 4:cout<<"星期四";break;

case 5:cout<<"星期五";break;

case 6:cout<<"星期六";break;

case 7:cout<<"星期日";break;

}cout< case 2:cout<<"请输入要查询的年份:";

cin>>m;

if(leapyear(m)==1) cout<<"是闰年"< else cout<<"不是闰年,请返回重新输入"< break;

case 3:cout<<"请输入月份:";

cin>>m;

yuefen(m);break;

case 4:cout<<"请输入所要打印年份:";

cin>>m;

nianfen(m);break;

case 5:cout<<"请输入年份:";

cin>>n;

cout< cin>>m;

cout< nianyue(n,m);break;

case 6:exit(0);

}

}

}

以上就是关于C语言程序设计 万年历查询程序。全部的内容,包括:C语言程序设计 万年历查询程序。、用java程序编一个某年某月的日历、c语言程序设计日历代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10624612.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存