| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 517 人关注过本帖
标题:输出日历函数出错
只看楼主 加入收藏
zhao3575
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-4-5
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
输出日历函数出错
要求编写程序,输出任意年份的日历,两列排列


#include <stdio.h>
void main ()
{
    int y,num,s1,s2,w1,w2,w,d1,d2,m1,m2;
    printf ("请输入要查询的年份:");
    scanf ("%d",&y);
    w=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+1;
    s1=s2=w1=w2=w%7;
    for(num=1;num<=12;num++)
    {
        printf("                  %d月",num++);
        printf("                                       %d月\n\n",num);
        printf("                                                六\n");
        switch (--num)//一月份的天数
        {
        case 1: m1=31;break;
        case 3: m1=31;break;
        case 5: m1=31;break;
        case 7: m1=31;break;
        case 9: m1=30;break;
        case 11: m1=30;break;
        }
        switch (++num)//二月份的天数
        {
        case 2: m2=28;
            if ((y%4==0&&y%100!=0)||(y%400==0)) m2=29;break;
        case 4: m2=30;break;
        case 6: m2=31;break;
        case 8: m2=31;break;
        case 10: m2=31;break;
        case 12: m2=31;break;
        }
        s1=w1=w%7;d1=1;
        s2=w2=(w1+m1)%7; d2=1;
        switch(s1)//月份第一天前面空格数
        {
        case 0: printf("%5d",d1);break;
        case 1: printf("%10d",d1);break;
        case 2: printf("%15d",d1);break;
        case 3: printf("%20d",d1);break;
        case 4: printf("%25d",d1);break;
        case 5: printf("%30d",d1);break;
        case 6: printf("%35d",d1);break;
            
        } w1++;
        if (w1%7==0) goto area21;
area11:for(;d1<=m1;d1++)
       {
           printf("5d",d1);w1++;
           if(w1%7==0) goto area21;
       }
area12:for(;d1<=m1;d1++)
       {
           printf ("%5d",d1); w1++;
           if (w1%7==0) goto area22;
       }
area21:switch (s2)
       {
        case 0: printf("%5d",d2);break;
        case 1: printf("%10d",d2);break;
        case 2: printf("%15d",d2);break;
        case 3: printf("%20d",d2);break;
        case 4: printf("%25d",d2);break;
        case 5: printf("%30d",d2);break;
        case 6: printf("%35d",d2);break;
       }  w2++;
       if (w2%7==0) goto area12;
      
area22:for(;d2<=m2;d2++)
       {
           printf("5d",d2);w2++;
           if (w2%7==0) goto area12;
       }
       goto area12;
    }
}


可是出不来结果,高数指错。谢谢谢谢
搜索更多相关主题的帖子: 函数 日历 输出 
2010-04-17 11:02
zhao3575
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-4-5
收藏
得分:0 
为什么没有人理啊
2010-04-17 11:07
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:10 
goto用的太多了,程序中少用goto造成程序混乱,去掉goto再写吧、

离恨恰如春草,更行更远还生。
2010-04-17 12:33
asdjc
Rank: 6Rank: 6
来 自:武汉
等 级:侠之大者
威 望:7
帖 子:98
专家分:487
注 册:2010-1-22
收藏
得分:10 
劝你从写哈,把思路都写上,少用goto语句。
2010-04-17 12:58
快速回复:输出日历函数出错
数据加载中...
 
   



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

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