永发信息网

求c语言编写万年历,要求输入一个年份,会显示那一个年份的一到十二月,还包括星期几。会的大神求解

答案:2  悬赏:40  手机版
解决时间 2021-12-30 05:55
求c语言编写万年历,要求输入一个年份,会显示那一个年份的一到十二月,还包括星期几。会的大神求解
最佳答案
我写过一个程序,输入日期能显示出是星期几,我把代码给你,你先给我采纳,我下午四点帮你写,现在没时间。
//输入日期 能知道是星期几。
#include<stdio.h>
int run(int n,int y,int r);//润平年判断与计算函数,结果为,此日期为当年的第几天。
int js(int n,int m);//计算函数,计算n1年与n2年之间整年的天数。
int main()
{
    int n1,y1,r1,s1,s2;
    printf("请出入年份:");            scanf("%d",&n1);    printf("\n");
    printf("请出入月份(1~12):");    scanf("%d",&y1);    printf("\n");
    printf("请出入号数(1~31):");    scanf("%d",&r1);    printf("\n");
    s1 = run(n1,y1,r1);
    s2 = js(n1,0);
    switch((s1+s2)%7)
    {
    case 0:printf("星期6\n");break;
    case 1:printf("星期7\n");break;
    case 2:printf("星期1\n");break;
    case 3:printf("星期2\n");break;
    case 4:printf("星期3\n");break;
    case 5:printf("星期4\n");break;
    case 6:printf("星期5\n");break;
    default:break;
    }
}

int run(int n,int y,int r)
{
    int run=0;
    int sum=0;
    int N[12]={31,28,31,30,31,30,31,31,30,31,30,31};//平年数组。
    int i;
    if(n%4==0&&n%100!=0||n%400==0){run=1;}//闰年的条件。
    if(run) N[1]=29;//闰年二月29天。    
    for(i=0;i<y-1;i++){
        sum = sum+N[i];//到y月前,此年经过了多少天。
    }
    sum = sum + r;//总天数。
    return sum;
}
int js(int n,int m)
{
    int i,a=0,sum=0;
    for(i=n-2;i>=m;i--){
        if(i%4==0&&i%100!=0||i%400==0){
            a=366;
        }else a=365;
        sum = sum + a;
    }
    return sum;
}
全部回答
我给你一个我编的,你自己修改吧,内容差不多 # include # include void printmonth(int m); void printhead(int m); int daysofmonth(int m); int firstday(int y); int year,weekday; void main() { int i; printf("请输入年份:"); scanf("%d",& year); weekday=firstday(year); printf("\n\n"); printf(" %d年\n",year); for(i=1;i<=12;i++) { printmonth(i); printf("\n"); } printf("\n\n"); } void printmonth(int m) //打印每月日历 { int i,days; printhead(m); days=daysofmonth(m); for(i=1;i<=days;i++) { printf("%5d",i); weekday=(weekday+1)%7; if (weekday==0) printf("\n "); } } void printhead(int m) //打印每月的日历头(判定起始位置) { int i; printf("\n%d月 日 一 二 三 四 五 六\n",m); printf(" "); for(i=0;i
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯