| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1024 人关注过本帖, 2 人收藏
标题:学着别人写万年历,可总不成功,帮忙看看原因
取消只看楼主 加入收藏
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
结帖率:100%
收藏(2)
已结贴  问题点数:20 回复次数:6 
学着别人写万年历,可总不成功,帮忙看看原因
今天看见个别人发的万年历程序,就研究好久,后来似有所得,便按照原来的思路也想写个万年历,几几经努力总是失败,证明自己还差的太远,可我实在想知道失败的原因,请大家帮看看,帮找找
#include<stdio.h>
#include<stdlib.h>
char month_name[13][9]={"","January","February","March","April","May","June","July","August","September","October","November","December"};
char weekday_name[7][4]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
int  month_day[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int month2[6][7];
 
print1(month)
{
  int t,i,j,p=0,m=1;
  printf("===%s===\n",month_name[month]);
  for(t=0;t<=6;t++)
  printf("%7s",weekday_name[t]);
  printf("\n");
  for(i=0;i<6;i++)
  for(j=0;j<7;j++)
  {
    printf("%7d",month2[i][j]);
    p++;
    if(p%7==0)
    printf("\n");
  }
}

leapyear(year)
{
    if(year%4==0&&year%100!=0||year%400==0)
    return(1);
    else
    return(0);
}
calendar(int year)
{
    int month,weekday,x;
    int i,j,t=0,k;
    printf("*****%d*****",year);
    weekday=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;
    if(leapyear(year))
    month_day[2]=29;
    else
    month_day[2]=28;
    for(month=1;month<=12;month++)
    {
        scanf("%d",&x);
        for(i=0;i<6;i++)
        for(j=0;j<=6;j++)
        month2[i][j]=0;

        for(k=1;k<=month_day[month];k++)
        {
           month2[t][weekday]=k;   
           weekday++;
           if(weekday=6)
           {
               weekday=0;
               t++;
           }
         }
        print1(month,k);
    }
}

main()
{
    int year;
    printf("qing shu ru nian fen:\n");
    scanf("%d",&year);
    calendar( year);
    getch();
}
另外小弟在程序中加的scanf("%d",&x);只是为了让程序停顿一下,便于便于排错,没有实际意义。
帮看看,稍稍占用点时间,谢谢。
搜索更多相关主题的帖子: 万年历 原因 include 
2012-10-30 17:59
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
我就是看了那个帖子才想写万年历的,可我比对半天也没发现错在哪里,

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-10-30 19:08
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
编译倒是没有报错,显示的样子也对,就是所有的日期都显示0

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-10-30 19:35
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
谁帮看看啊

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-10-30 20:01
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
回复 10楼 hepigzhang
感谢感谢,十分感谢,你的话对我这样自学的人太有帮助了,平时总觉得自己很细致,没想到第一次写点东西就有这多错误

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-10-31 08:47
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
其实真的不爱用do...while循环,因为个人认为FOR可以解决现阶段所有循环问题

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-01 09:42
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
char month_name[13][6]={"","JAN","FEB","MAR","APR","JUN","JUL","AUG","SEP","OCT","NOV","DEC"};
char week_name[7][6]={"sun","mon","tue","wed","thu","fir","sat"};
int month_day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int month2[6][7];

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

int calendar(int year)
{

    int month;
    int weekday;
    int i,j,k,t=0,x;
    if(leapyear(year))month_day[2]=29;
    else month_day[2]=28;
    weekday=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;


    for(month=1;month<=12;month++)
    {    t=0;
            for(i=0;i<6;i++)
    for(j=0;j<7;j++)
    month2[i][j]=0;
        scanf("%d",&x);
        for(k=1;k<=month_day[month];k++)
        {
            month2[t][weekday]=k;
            weekday++;
            if(weekday==7)
            {
                weekday=0;
                t++;
            }
        }
     print1(month);
    }
}

print1(int month)
{
    int i,j,p,m=0;
    printf("=====%s=====\n",month_name[month]);
    for(p=0;p<7;p++)
    printf("%7s",week_name[p]);
    printf("\n");
    for(i=0;i<6;i++)
    for(j=0;j<7;j++)
    {   if(month2[i][j]==0)
        printf("%7c",32);
        else
        printf("%7d",month2[i][j]);
        m++;
        if(m%7==0)
        {
            printf("\n");
        }

     }
     printf("\n");
}

main()
{
    int year;
    printf("qing shu ru nian fen:\n");
    scanf("%d",&year);
        printf("*****%d*****",year);
    calendar(year);
    system("puse");
    getch();
}
解决了 ,真的很艰难,

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-01 09:50
快速回复:学着别人写万年历,可总不成功,帮忙看看原因
数据加载中...
 
   



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

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