| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3066 人关注过本帖, 1 人收藏
标题:求万年历的代码!这个好像是高手的活
只看楼主 加入收藏
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
结帖率:88.24%
收藏(1)
已结贴  问题点数:5 回复次数:49 
求万年历的代码!这个好像是高手的活
万年历
   日常生活中离不开年历。编写程序要求当用户输入年份时能输出该年的日历,在日历上能够看出某天是星期几,可以显示任意一年任意一天,并能够知道是否是闰年等。(以1980年1月1日星期二为基准)


说明一下我是初学!最近有了课程设计的任务 很紧!但是我们只上到了 指针就结束了!而且关于C中一些系统命令几乎不知道!大家给的代码要用最普通的代码写出来

如果写不出 ,告诉我这个万年历的思路是怎么样的啊!感谢各位啊
搜索更多相关主题的帖子: 用户 日历 万年历 
2011-06-04 19:18
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
收藏
得分:0 
上网搜一个改改交给老师。。。。每次总是还没弄懂什么是C就让我们做课程设计。没什么意思。。。。等你学好了自己好好写写大程序的就行。为老师的作业赶着弄不值。还是一步步的走比较好。除非你要拿奖学金什么什么的。。。。
个人意见。。。。仅供参考

。。。!!!)))000
2011-06-04 20:02
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 2楼 木头lbj
我还真想拿奖学金,成绩和入党,拿奖学金 ,过计算机国家二级(学位证书)挂钩啊!不敢疏忽
2011-06-04 20:39
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
程序代码:
#include<stdio.h>
#include <stdlib.h>
bool funyear(int year)
{
    if(year%4 == 0 && year%100 != 0 || year%400 == 0)
        return true;
    else
        return false;
}
int main()
{
    unsigned int a;
    unsigned int year;
    while(1)
    {
        scanf("%d",&year);
        int sum = 2;
        for(a = 1980;a<year;a++)
        {
            if(funyear(a))
                sum+=2;
            else
                sum++;
        }
        int start = sum%7;
        getchar();
        int i,j,k;
        for(j = 1;j<=12;j++)
        {
            printf("Start is %d\n",start);
            printf("Month:%d\n",j);
            if(j == 1 ||j == 3 ||j == 5 ||
                j == 7||j == 8||j == 10||j == 12)
            {
                printf("日  1  2  3  4  5  6\n");
                int k = 0;
                for(k = 0;k<start;k++)
                    printf("X  ");
                for(i = 1;i<=31;i++)
                {
                    k++;
                    printf("%-2d ",i);
                    if(k%7 == 0)
                        printf("\n");
                }
                start+=31;
                start = start%7;
            }
            else if(j == 4 ||j == 6 ||j == 9 ||
                j == 11)
            {
                printf("日  1  2  3  4  5  6\n");
                int k = 0;
                for(k = 0;k<start;k++)
                    printf("X  ");
                for(i = 1;i<=30;i++)
                {
                    k++;
                    printf("%-2d ",i);
                    if(k%7 == 0)
                        printf("\n");
                }
                start+=30;
                start = start%7;
            }
            else if(funyear(year))
            {
                printf("日  1  2  3  4  5  6\n");
                int k = 0;
                for(k = 0;k<start;k++)
                    printf("X  ");
                for(i = 1;i<=29;i++)
                {
                    k++;
                    printf("%-2d ",i);
                    if(k%7 == 0)
                        printf("\n");
                }
                start+=29;
                start = start%7;
            }
            else
            {
                printf("日  1  2  3  4  5  6\n");
                int k = 0;
                for(k = 0;k<start;k++)
                    printf("X  ");
                for(i = 1;i<=28;i++)
                {
                    k++;
                    printf("%-2d ",i);
                    if(k%7 == 0)
                        printf("\n");
                }
                start+=28;
                start = start%7;
            }
             printf("\n\n");
        }
    }
    return 0;
}
刚刚完成

                                         
===========深入<----------------->浅出============
2011-06-04 21:03
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
收藏
得分:0 
据说万年历网上N多。。。
2011-06-04 21:06
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 4楼 laoyang103
我崇拜你
2011-06-04 21:09
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 6楼 唏嘘草
你来测试吧  有BUG  +我QQ 553069938

                                         
===========深入<----------------->浅出============
2011-06-04 21:11
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:5 
凑个热闹
程序代码:
#include <stdio.h>

void PrintMonth(int year, int month)
{
    int preDays, preMonth, preYears, monthDays, i;
    char isLeap;
    
    preYears = year - 1;
    preDays = preYears * 365 + preYears / 4 - preYears / 100 + preYears / 400;
    isLeap = ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) ? 1 : 0;
    preMonth = month - 1;
    switch(preMonth)
    {
        case 1: preDays += 31; break;
        case 2: preDays += 59; break;
        case 3: preDays += 90; break;
        case 4: preDays += 120; break;
        case 5: preDays += 151; break;
        case 6: preDays += 181; break;
        case 7: preDays += 212; break;
        case 8: preDays += 243; break;
        case 9: preDays += 273; break;
        case 10: preDays += 304; break;
        case 11: preDays += 334; break;
    }
    if(preMonth >= 2 && isLeap) preDays++;
    switch(month)
    {
        case 1: monthDays = 31; break;
        case 2: monthDays = 28; break;
        case 3: monthDays = 31; break;
        case 4: monthDays = 30; break;
        case 5: monthDays = 31; break;
        case 6: monthDays = 30; break;
        case 7: monthDays = 31; break;
        case 8: monthDays = 31; break;
        case 9: monthDays = 30; break;
        case 10: monthDays = 31; break;
        case 11: monthDays = 30; break;
        case 12: monthDays = 31; break;
    }
    if(month == 2 && isLeap) monthDays++;
    switch(month)
    {
        case 1: printf("January"); break;
        case 2: printf("February"); break;
        case 3: printf("March"); break;
        case 4: printf("April"); break;
        case 5: printf("May"); break;
        case 6: printf("June"); break;
        case 7: printf("July"); break;
        case 8: printf("August"); break;
        case 9: printf("September"); break;
        case 10: printf("October"); break;
        case 11: printf("November"); break;
        case 12: printf("December"); break;
    }
    printf(" %d", year);
    if(isLeap) printf(" leap year");
    printf("\nSun Mon Tue Wed Thu Fri Sat\n");
    preDays %= 7;
    if(preDays < 6) for(i = 0; i <= preDays; i++) printf("    ");
    for(i = 1; i <= monthDays; i++)
    {
        printf("%2d  ", i);
        if((i + preDays) % 7 == 6) printf("\n");
    }
    printf("\n");
}

int main()
{
    int year, month;
    for(;;)
    {
        scanf("%d %d", &year, &month);
        if(year <= 0 || month <= 0) break;
        PrintMonth(year, month);
    }
    return 0;
}

重剑无锋,大巧不工
2011-06-04 21:16
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 8楼 beyondyf
哥你的是 以1980年1月1日星期二为基准  的吗
2011-06-04 22:39
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 9楼 唏嘘草
需要吗?试着选一个月的日历对对看。
告诉你一个秘密,公元1年1月1日是星期一。

重剑无锋,大巧不工
2011-06-04 22:45
快速回复:求万年历的代码!这个好像是高手的活
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022406 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved