求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
int run(int n, int y, int r);//润平年判断与计算函数,结果为,此日期为当年的第几天。
int js(int n, int m);//计算函数,计算n1年与n2年之间整年的天数。
int main()
{
int n1, s1, s2;
int i,j,k,m;
int N[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };//平年数组。
printf("请出入年份:"); scanf("%d", &n1); printf("\n");
if ((n1 % 4 == 0 && n1 % 100 != 0 )|| n1 % 400 == 0) N[1] = 29;
for (i = 1; i <= 12; i++)
{
m = 1;
printf("\t***************%d 月*******************\n", i);
printf("周一\t周二\t周三\t周四\t周五\t周六\t周日\t\n");
for (j = 1; j <= N[i-1]; j++)
{
if(j == 1)
{
s1 = run(n1, i, 1);
s2 = js(n1, 0);
switch ((s1 + s2) % 7)
{
case 0:for (k = 0; k < 5; k++) printf("\t"); printf("%d\t",j); m = 8; break;
case 1:for (k = 0; k < 6; k++) printf("\t"); printf("%d\t",j); m = 7; break;
case 2: printf("%d\t",j); m = 2; break;
case 3:for (k = 0; k < 1; k++) printf("\t"); printf("%d\t",j); m = 3; break;
case 4:for (k = 0; k < 2; k++) printf("\t"); printf("%d\t",j); m = 4; break;
case 5:for (k = 0; k < 3; k++) printf("\t"); printf("%d\t",j); m = 5; break;
case 6:for (k = 0; k < 4; k++) printf("\t"); printf("%d\t",j); m = 6; break;
default:break;
}
}
else
{
printf("%d\t", j);

不行,这个它字数限制

你加我QQ1023006144。我发完整的给你

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-05-15
你好,显示格式有要求吗追问

没有,就像平时我们看日历嘞个就好

相似回答