| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3066 人关注过本帖, 1 人收藏
标题:求万年历的代码!这个好像是高手的活
只看楼主 加入收藏
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
以下是引用C小易在2011-6-6 16:44:01的发言:

唉!都写得这么复杂!
# include "stdio.h"
int week(int y,int m,int d);
 main()
{
 int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};

 int y,w,i,m=1,d=1;
 printf("请输入一个年份yyyy:\n");
 scanf("%d",&y);
 if (y%4==0&&y%100!=0) monthday[1]=29;


 for(m=1;m<=12;m++)
 {

  printf("\n %d年,%d月\n",y,m);
  printf("S M T w T F S \n");

  for (d=1;d<=monthday[m-1];d++)
  {
   w=week(y,m,d);
   if(d==1)
   {
    for (i=0;i
他们写的已经不错了,你想要简单的啊,我给你一个20行左右的。
2011-06-06 17:10
匿名
该用户匿名发帖
收藏
得分:0 
回复 33楼 C小易
.
2011-06-06 17:26
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 31楼 C小易
我靠这么少啊
2011-06-06 17:29
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
回复 35楼 唏嘘草
是很少

[ 本帖最后由 hjywyj 于 2011-6-6 17:32 编辑 ]
2011-06-06 17:30
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
程序代码:
int i,y,x,day,j,s=0,sum=365,m,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("请输入年份:");
scanf("%d",&x);
day=(x+(x-1)/4-(x-1)/100+(x-1)/400)%7;
if(x%4==0)
{a[1]++;sum++;}
if(day==0)
day=7;
sum=sum+day;
for(i=0;i<12;i++)
{printf("%d年%d月:\n\n",x,i+1);
printf("   周日 周一 周二 周三 周四 周五 周六\n");
{for(j=1;j<=a[i];j++)
{if(j==1)
for(m=0;m<day%7*5;m++)
printf(" ");
printf("%5d",j);
if((day+j)%7==0)
printf("\n");}}
day=(day+a[i])%7;
printf("\n\n");}


仅供参考!!!
2011-06-06 17:33
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 37楼 hjywyj
我想问你的是为什么我的对齐有问题啊,这个对其了,别的又不对齐了啊?能帮忙解释下吗?
基本上没问题了,就是每个月的第一行的对齐有问题.求解释啊!求指点

[ 本帖最后由 唏嘘草 于 2011-6-6 17:46 编辑 ]
2011-06-06 17:45
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
回复 38楼 唏嘘草
抱歉,我这里没问题,我不知道你用的啥编译软件,论坛我不会发图片。请复制一下。
2011-06-06 17:50
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 39楼 hjywyj
程序代码:
#include<stdio.h>

int main()
{printf("                                                                 万年历by\n");
void abc( int year,int month);
int year,month;
for(;;)
{printf("请输入要查询的年份和月份\n");
printf("年份:");
scanf("%d",&year);
printf("月份:");
scanf("%d",&month);
for(;;)
if(year>0&&(1<=month&&month<=12))break;
else{printf("请输入正确的年份和月份\n");
printf("年份:");
scanf("%d",&year);
printf("月份:");
scanf("%d",&month);}
abc(year,month);
}
return 0;
}


void abc(int year,int month)
{int preyear;int premonth;int predays;int days; int leap;int i;
preyear=year-1;
premonth=month-1;
leap=((year%4==0&&year%100!=0)||(year%400==0))?1:0;
predays=preyear*365+preyear/4+preyear/400-preyear/100;
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(leap&&month>=3)predays++;

if(leap)printf("闰年 ");else printf("平年 ");
switch(month)
{case 1:days=31;printf("1月 ");break;

 case 2:days=29;printf("2月 ");break;

 case 3:days=31;printf("3月 ");break;

 case 4:days=30;printf("4月 ");break;

 case 5:days=31;printf("5月 ");break;

 case 6:days=30;printf("6月 ");break;

 case 7:days=31;printf("7月 ");break;

 case 8:days=31;printf("8月 ");break;

 case 9:days=30;printf("9月 ");break;

 case 10:days=31;printf("10月 ");break;

 case 11:days=30;printf("11月 ");break;

 case 12:days=31;printf("12月 ");break;
}
if(leap&&month==2)days=28;
printf("%d\n",year);
printf("   日   一   二   三   四   五   六\n");
predays%=7;
for(i=1;i<=predays;i++)
printf("       ");
for(i=1;i<=days;i++)
{printf(" %4d",i);
if((i+predays)%7==6)printf("\n");
}
printf("\n");
printf("\n");
}

                  我用VC++6.0  我自己写的,但是对其存在问题,主要是每个月的第一行,而且有的月份能对齐有的月份对不齐,不知道是什么原因?求指点
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 唏嘘草 于 2011-6-6 18:03 编辑 ]
2011-06-06 17:57
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
回复 40楼 唏嘘草
我还以为你说的是我的程序来。
你的程序空格没控制好,改一下
printf("              六\n");
predays%=7;
for(i=1;i<=predays;i++)
printf("     ");
for(i=1;i<=days;i++)
{printf("%4d",i);
2011-06-06 18:09
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 41楼 hjywyj
你说清楚点啊,是空几个啊,我貌似都试过了 啊
2011-06-06 18:25
快速回复:求万年历的代码!这个好像是高手的活
数据加载中...
 
   



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

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