问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

编写一个万年历

发布网友 发布时间:2022-04-29 08:38

我来回答

3个回答

热心网友 时间:2022-06-24 23:34

以当前电脑时间为基准,显示当前年月的日历
可以按左右方向键,翻到上一月或下一月
可以按上下方向键,翻到上一年或下一年
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

int leap(int year )
{
if ((year %4 == 0) && (year % 100 != 0)
|| (year % 400 == 0))
{
return 1;
}
return 0;
}

void show(int year,int month)
{
const char month_str[][4]={"","Jan","Feb","Mar","Apl",
"May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
const int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,j,wdays,mdays,days;

for(i=1,days=0;i<year;i++)
{
if(leap(i))
{
days += 366;
}
else
{
days += 365;
}
}
for(i=1;i<month;i++)
{
if(i==2 && leap(year))
{
days+=29;
}
else
{
days+=month_day[i];
}
}

printf(" %s (%d)\n",month_str[month],year);
printf(" Mon Tue Wed Thu Fri Sat Sun\n");
wdays = days % 7;
for( j = 0; j < wdays; j++)
{
printf(" ");
}
if(month == 2 && leap(year))
{
mdays=29;
}
else
{
mdays= month_day[month];
}
for(i=1;i<=mdays;i++)
{
if( i > 1 && days % 7 == 0 )
{
printf("\n");
}
printf("%4d",i);
days=days+1;
}
printf("\n---------------------------\n");
}

main()
{
time_t rawtime;
struct tm *info;
int year,month;
char ch;

time ( &rawtime );
info = localtime ( &rawtime );
year =info->tm_year + 1900;
month =info->tm_mon + 1;
while(1)
{
show(year,month);
printf("Left....Prev Month\n");
printf("Right...Next Month\n");
printf("Up......Prev Year\n");
printf("Down....Next Year\n");
printf("Esc.....Exit\n");
ch=getch();
switch(ch)
{
case 27://Ecs
exit(0);
case -32://Navigator
ch=getch();
if(ch==77)
{//Right
year+=(month==12)?1:0;
month=month%12+1;
}
else if(ch==75)
{//Left
year-=(month==1)?1:0;
month=(month-2+12)%12+1;
}
else if(ch==72)
{//Up
year--;
}
else if(ch==80)
{//Down
year++;
}
system("cls");
}
}
}

热心网友 时间:2022-06-24 23:35

下面程序中的flag 若改为 flag=1,则输入年,可以检查计算是否正确。flag =0;程序取计算机当前年月,显示本月日历。
若要程序运行万年,可以自己加循环,不时检查系统年月,年月变了,显示新的月。

若要用VC画日历,可用win32,添加
int WINAPI WinMain(...){}
LRESULT CALLBACK WndProc() 等,
用CDC TextOut(hdc,....); 输出。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int leap(int yy )
{
if ((yy %4 == 0) && (yy % 100 != 0) || (yy % 400 == 0) ) return 1;
return 0;
}

void main()
{
int i,j,k;
int flag=0,m0,m1; // flag=1 -- enter year, flag=0 -- get time.
int yy,mm,YD;
long int JD = 0;
int Y0 = 1;
int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char str_m[][9]={" ","Jan","Feb","Mar","Apl","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
time_t rawtime;
struct tm *info;
int target_y,target_m;

time ( &rawtime );
info = localtime ( &rawtime );
target_y =info->tm_year + 1900;
target_m =info->tm_mon + 1;
yy= target_y;

if (flag != 0)
{
printf("Please Enter the year:\n");
scanf("%d",&yy);
};

while(Y0 < yy)
{
if( leap( Y0 ) ) {YD = 366;} else {YD = 365; };
JD = JD + YD;
Y0++;
}

if (flag==0) {m0=target_m; m1=target_m;} else {m0=1;m1=12;};

for( mm = m0; mm <= m1; mm++ )
{
printf(" %s (%d)\n",str_m[mm],yy);
i = JD % 7;
printf(" Mon Tue Wed Thu Fri Sat Sun\n");
if( i != 0 ) for( j = 0; j < i; j++) printf(" ");
if( leap(yy) && mm == 2) {k=29;} else { k= month_day[mm];};
for (i=1;i<=k;i++){
if( i > 1 && JD % 7 == 0 ) printf("\n");
printf("%3d ",i);JD=JD+1;
}
printf("\n---------------------------\n");
}
getch();
}

热心网友 时间:2022-06-24 23:35

#include <stdio.h>
#include<conio.h>
#include<stdlib.h>
int IsLeapYear(int);
int main()
{
int i;
int day;
int year;
int temp;
int temp_i;
long int Year_days = 0;
int Year_Start = 1;
int Per_Year_Days;
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29};

printf("Please enter the year: ");
scanf("%d",&year);

while(Year_Start < year)
{
if( IsLeapYear( Year_Start ) )
Per_Year_Days = 366;
else
Per_Year_Days = 365;

Year_days = Year_days + Per_Year_Days;
Year_Start++;
}

for( temp = 1; temp <=12; temp++ )
{
switch( temp )
{
case 1:
printf(" January(%d)\n",year);
break;
case 2:
printf(" February(%d)\n",year);
break;
case 3:
printf(" March(%d)\n",year);
break;
case 4:
printf(" April(%d)\n",year);
break;
case 5:
printf(" May(%d)\n",year);
break;
case 6:
printf(" June(%d)\n",year);
break;
case 7:
printf(" July(%d)\n",year);
break;
case 8:
printf(" August(%d)\n",year);
break;
case 9:
printf(" September(%d)\n",year);
break;
case 10:
printf(" October(%d)\n",year);
break;
case 11:
printf(" November(%d)\n",year);
break;
case 12:
printf(" December(%d)\n",year);
break;
}
i = Year_days % 7;
printf("Mon Tue Wed Thu Fri Sat Sun\n");
if( i != 0 )
for( temp_i = 0; temp_i < i; temp_i++)
printf(" ");
day = 1;
if( IsLeapYear(year) && temp == 2)
while( day <= month_day[12] )
{
if( day >1 )
if( Year_days % 7 == 0 )
printf("\n");
if( day >= 10 )
printf("%d ",day);
else
printf("%d ",day);
Year_days++;
day++;
}

else
while (day <= month_day[temp-1])
{
if( day > 1 )
if( Year_days % 7 == 0 )
printf("\n");
if( day >=10 )
printf("%d ",day);
else
printf("%d ",day);
Year_days++;
day++;
}
printf("\n");
if( getch() == 'q' )
exit(0);
}
getch();
}

int IsLeapYear( int year )
{
if ((year %4 == 0) && (year % 100 != 0) ||
(year % 400 == 0) )
return 1;
else
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...flash学得好、将来会有什么用、求哥哥、姐姐们、帮帮忙 我即将初中毕业,想要读技校,但又不知选那科好`哥哥姐姐们帮个忙吧! 成绩不好,高中毕业想学电脑,哪位哥哥姐姐知道帮忙推荐下学校_百度知 ... 大学计算机3级 怎样学习啊 难吗 哥哥姐姐 帮帮忙吧 ...就业怎样?我报了这个专业,请各位哥哥姐姐帮帮忙 请IT业工作的哥哥姐姐帮忙出出主意~~ ...师傅让他沿着水缸边行走练功。有谁知道这个电影叫什么? 小伙穿越拜"小龙女"为师,与小龙女合练武功是什么电影 ...电影开头是一个赤膊的男主角在练功,然后再和队友们去做任务,结果一... ...一秒竟然穿越了醒来第一句话就是疼死宝宝了是什么电视剧? 用c语言设计一个简单的万年历怎么写代码 用c语言编写一个万年历的程序,2000-2016,输入其中一个年份可以得到一到十二月的日期,包括星 一个简单的万年历 一个万年历一个月用多少度电 一个万年历应该包含哪几个部分 w665属于不锈钢吗 669和667不锈钢。都叫201吗? 不锈钢667和669区别? 淹排骨怎么做好吃 腌过的排骨怎么做好吃啊 诺基亚N95 8G的怎样按装导航 中国百家姓中董姓辈分是怎么排的? 绥阳的白马市的路线导航 家常腌制排骨怎么做好吃? 天籁加个导航要多少钱(原配) 龙航的导航怎样 “董志塬”名称的由来是什么? 董车长app怎么注销账号 最新比亚迪问董秘,最新002594问董秘 我叫董小米演员表 编写一个万年历的程序 新款凯雷德可以选配4座吗 用c语言编制一个万年历 百万售价!八缸4.0T!国产SUV竟然还有这种狠角色? 万年历老是显示一个信息未读 拥有硬气外型大气磅礴气质的大车盘点! 用C或C++实现一个万年历程序主要功能屏幕上显示任意年月的月历按每行两个月的格式输出当年或指定的任意 ISO17025和GB27025的区别 陆地“轰炸机”凯迪拉克CTS两门版开了7年报价14万,网友:赚了! 通过ISO 17025需要什么的条件?费用为多少? 以日产Ariya为首的四款北京车展首发车 你想最快量产哪个? 「非正义」座驾与「里程焦虑」遐思 压轴出场亮点多,最后一个月还有这么多新车上市 凯迪拉克是国产车吗 求各大汽车品牌和类型 计划2022年交付 福特Bronco确认手动挡车型订单 塞纳真的要来了,GL8表示不慌 红旗E -HS9购车指南:自主首款大型纯电SUV怎么选? 越野车有哪些品牌 越野气车有哪几种品牌?