×

万年历代码

JAVA万年历代码?C语言万年历代码

admin admin 发表于2022-09-05 08:57:49 浏览133 评论0

抢沙发发表评论

本文目录

JAVA万年历代码


/*
题目:输出任意年份任意月份的日历表(公元后)
思路:
    1.已知1年1月1日是星期日,1 % 7 = 1 对应的是星期日,2 % 7 = 2 对应的是星期一,以此类推;
    2.计算当年以前所有天数+当年当月1号之前所有天数;
      a.年份分平年闰年,平年365天,闰年366天;
      b.闰年的判断方法year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)若为真,则为闰年否则为平年;
      c.定义平年/闰年数组,包含各月天数;
      d.遍历数组求和,计算当年当月前总天数;
      e.当年以前所有天数+当年当月前总天数+1即为1年1月1日到当年当月1日的总天数;
    3.总天数对7取模,根据结果判断当月1号是星期几,输出空白区域;
    4.输出当月日历表,逢星期六换行
*/
import java.util.Scanner;
class FindMonthList {
    public static void main(String args){
        Scanner sc = new Scanner(System.in);
        System.out.println(“请输入年份:“);
        int year = sc.nextInt();            //年份
        if (year 《 1) {                        //判断非法输入年份
            System.out.println(“输入错误!“);
            return;
        }
        System.out.println(“请输入月份:“);
        int month = sc.nextInt();            //月份
        if (month 《 1 || month 》 12) {        //判断非法输入月份
            System.out.println(“输入错误!“);
            return;
        }
        //输出表头
        System.out.println(“-------“ + year + “ 年 “ + month + “ 月 “ + “-------“);
        System.out.println();
        System.out.println(“日  一  二  三  四  五  六“);
        //计算当前年份以前所有天数beforeYearTotalDay;每4年一个闰年,闰年366天,平年365天
        int beforeYearTotalDay = ((year - 1) / 4 * 366) + (year-1 - ((year - 1) / 4)) * 365;
        int arrLeapYear = {0,31,29,31,30,31,30,31,31,30,31,30,31};    //闰年各月天数    int数组
        int arrNormalYear = {0,31,28,31,30,31,30,31,31,30,31,30,31};    //平年各月天数    int数组
        int beforeMonthTotalDay = 0;                                    //定义本年当月之前月份的总天数
        if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) {    //判断当前年份是否是闰年
            for (int i = 0 ; i 《 month ; i ++ ) {    //for循环计算当月之前总天数
                //计算当前月份之前的所有天数
                beforeMonthTotalDay = beforeMonthTotalDay + arrLeapYear[i];
            }
            //判断当月1日是星期几
            int totalDay = beforeYearTotalDay + beforeMonthTotalDay + 1;
            int week = totalDay % 7;//已知1年1月1日是星期日,即模7得1对应的是星期日
            for (int i = 0 ; i 《 (week - 1 + 7) % 7 ; i ++) {    //如果写成i 《 (week-1)会出现i《-1的情况
                System.out.print(“    “);//输出开头空白
            }
            for (int i = 1 ;i 《= arrLeapYear[month] ;i ++ ) {    //for循环输出各月天数
                System.out.print(i + “  “);
                if (i 《 10 ) {        //小于10的数补一个空格,以便打印整齐
                    System.out.print(“ “);
                }
                if (i % 7 == ((7-(week - 1)) % 7 ) || i == arrLeapYear[month]) {//每逢星期六/尾数换行
                    System.out.println();
                }
            }
        } else {        //不是闰年就是平年
            for (int i = 0 ; i 《 month ; i ++ ) {    //for循环计算出当月之前月份总天数
                beforeMonthTotalDay = beforeMonthTotalDay + arrNormalYear[i];
            }
            //判断当月1日是星期几
            int totalDay = beforeYearTotalDay + beforeMonthTotalDay + 1;
            int week = totalDay % 7;//已知1年1月1日是星期日,即模7得1对应的是星期日
            for (int i = 0 ; i 《 (week - 1 + 7) % 7 ; i ++) {    //如果写成i 《 (week-1)会出现i《-1的情况
                System.out.print(“    “);//输出开头空白
            }
            for (int i = 1 ;i 《= arrNormalYear[month] ;i ++ ) {//for循环输出各月天数
                System.out.print(i + “  “);
                if (i 《 10 ) {            //小于10的数补一个空格,以便打印整齐
                    System.out.print(“ “);
                }
                if (i % 7 == ((7-(week - 1)) % 7 ) || i == arrNormalYear[month]) {//每逢星期六/尾数换行
                    System.out.println();
                }
            }
        }
    }
}

显示效果:


C语言万年历代码


#include“stdio.h“
#include“stdlib.h“
main( )
{
int Year,Month; //年、月
int FirstDay_Year,FirstDay_Month; //某年的第一天是星期几,某年某月的第一天是星期几(范围是0~6,其中0代表星期日)
int IsLeapYear; //是否为闰年,0表示不是闰年,1表示是闰年
int i,d,y; //临时变量
char YN; //Yes No,程序是否要继续
int Days={0,31,28,31,30,31,30,31,31,30,31,30,31};
//Days[1~12]存储每个月有多少天,其中二月的天数是可变的(闰年29天,平年28天),这里初始化为28天
printf(“ C语言简单万年历\n“); //打印标题
XunHuan: //循环标号(可以通过goto跳转到这里)
printf(“请输入年份《0000~9999》: “); //提示输入年份(0~9999)
scanf(“%d“,&Year); //把输入的年份赋值给变量Year
printf(“请输入月份《0~12》: “); //提示输入月份(1~12)
scanf(“%d“,&Month); //把输入的月份赋值给变量Month
y=Year;
FirstDay_Year=5*(y/4)+(y%4)-(y/100)+(y/400);//蔡勒公式(计算某年的第一天是星期几)
IsLeapYear=(y%4==4&&y%100!=100||y%400==0)?1:0;
//判断是否为闰年
Days=(IsLeapYear==1)?29:28; //闰年二月29天,非闰年二月28天
for(i=1,d=0;i《Month;i++)
d=d+Days[i];
FirstDay_Month=(d+FirstDay_Year)%7; //当月的第一天是星期几(0代表星期日)
printf(“\n****************************************************\n“);
printf(“\t\t公元 %d 年 %2d 月“,Year,Month); //打印年月
printf(“\n****************************************************\n“);

printf(“ 星期日 星期一 星期二 星期三 星期四 星期五 星期六\n“);
//打印星期表头
for(i=0;i《FirstDay_Month;i++)
printf(“%7c“,’ ’); //当某月的第一天不是星期日时打印空格占位
for(d=1;d《=Days[Month];d++) //循环,从每个月的第一天开始打印
{
printf(“%7d“,d);
if(((d+FirstDay_Month)%7)==0 && d《Days[Month])
printf(“\n“); //当输出了星期六而且还未输出所有天数时,换行
}
printf(“\n****************************************************\n“);
printf(“\n“);
printf(“是否继续(Y/N)?\n“);
scanf(“%c“,&YN);
scanf(“%c“,&YN);
if(YN==’Y’ || YN==’y’)
goto XunHuan;
}

求大神帮忙写一个c语言万年历代码,(要求输入一个年月,打印出对应的日历表,并且还要附加上一个动态时


(时间范围: 1970 ~ 2105 年)

#include 《stdlib.h》
#include 《stdio.h》
#include 《time.h》
#include 《windows.h》
int main ()
{
 int year, month, n;
 printf (“年: “);
 scanf (“%d“, &year);
 printf (“月: “);
 scanf (“%d“, &month);
 time_t t, t1;
 struct tm *mkt = new tm, *gmt;
 t = time(NULL);
 mkt = gmtime(&t);
 mkt-》tm_mday = 1;
 mkt-》tm_mon = month - 1;
 mkt-》tm_year = year - 1900;
 t1 = mktime(mkt);
 n = mkt-》tm_wday;
 gmt = mkt;
 COORD p;
 HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
 while (true)
 {
  system (“cls“);
  p.X = 0;
  p.Y = 0;
  SetConsoleCursorPosition (out, p);
  t = time(NULL);
  gmt = gmtime(&t);
  printf (“%d 年 %d 月 %02d:%02d:%02d\n\n日 一 二 三 四 五 六“, year, month, gmt-》tm_hour, gmt-》tm_min, gmt-》tm_sec);
  t = t1;
  gmtime(&t);
  do
  {
   p.X = gmt-》tm_wday * 3;
   p.Y = (gmt-》tm_mday + n - 1) / 7 + 3;
   SetConsoleCursorPosition (out, p);
   printf (“%d “, gmt-》tm_mday);
   t += 86400;
   gmtime(&t);
  }
  while (gmt-》tm_mday 》 1);
  Sleep (1000);
 }
 return 0;
}
-万年历代码

C++编写的万年历


1.int Date::isleapyear()返回值:return 1表示是闰年,return 0表示不是闰年,因为闰年的话二月有29天,所以只是不能做调换的.
2.char* weekd={“SUN“,“MON“,“TUE“,“WEN“,“THU“,“FRI“,“STA“,};和char* weekd={“MON“,“TUE“,“WEN“,“THU“,“FRI“,“STA“,“SUN“};也是不能调换的,因为你使用的计算周几的公式是要求每个星期的第一天是:星期天
补充:
你如果确实想用return 0表示闰年 用return 1表示平年也可以,那调用函数的时候就要改一下,如下
int Date::getyeardays(int y)
{
if(!isleapyear())return 366;//isleapyear()前面加!
else
return 365;
}
-万年历代码

用c语言设计一个简单的万年历怎么写代码


#include“stdio.h“#include“stdlib.h“main(){intYear,Month;//年、月intFirstDay_Year,FirstDay_Month;//某年的第一天是星期几,某年某月的第一天是星期几(范围是0~6,其中0代表星期日)intIsLeapYear;//是否为闰年,0表示不是闰年,1表示是闰年inti,d,y;//临时变量charYN;//YesNo,程序是否要继续intDays={0,31,28,31,30,31,30,31,31,30,31,30,31};//Days[1~12]存储每个月有多少天,其中二月的天数是可变的(闰年29天,平年28天),这里初始化为28天printf(“C语言简单万年历\n“);//打印标题XunHuan://循环标号(可以通过goto跳转到这里)printf(“请输入年份:“);//提示输入年份(0~9999)scanf(“%d“,&Year);//把输入的年份赋值给变量Yearprintf(“请输入月份:“);//提示输入月份(1~12)scanf(“%d“,&Month);//把输入的月份赋值给变量Monthy=Year;FirstDay_Year=5*(y/4)+(y%4)-(y/100)+(y/400);//蔡勒公式(计算某年的第一天是星期几)IsLeapYear=(y%4==4&&y%100!=100||y%400==0)?1:0;//判断是否为闰年Days=(IsLeapYear==1)?29:28;//闰年二月29天,非闰年二月28天for(i=1,d=0;i
-万年历代码

c语言万年历代码


#include《iostream.h》
#include《iomanip.h》
static char *title=“ SUN MON TUE WED THU FRI SAT“;
static char *month={“一月“,“二月“,“三月“,“四月“,“五月“,“六月“,“七月“,“八月“,“九月“,“十月“,“十一月“,“十二月“};
static day={31,28,31,30,31,30,31,31,30,31,30,31};
int leap(int year);
int week(int year);
void main()
{
int i,j,year,initweek;
do
{
cout《《“输入年份:“;
cin》》year;
}while (year《=1900); //要求输入的年份必须大于1900
if(leap(year)) //闰年的二月份为29天
day=29;
initweek=week(year);
cout《《“\n\t“《《setw(21)《《year;
for (i=0;i《12;i++)
{
cout《《“\n\t“;
for (int k=0;k《35;k++) //输入一条横线
cout《《“-“;
cout《《“\n\t“《《setw(21)《《month[i]; //输出月份
cout《《“\n\n\t“《《title《《“\n\t“; //输出星期号
for (k=0;k《initweek;k++) //输出若干空格
cout《《“ “;
for (j=1;j《=day[i];j++) //输出当前月份所有的日期
{
if ((j+initweek)%7==1) //遇到星期日时换一行输出
cout《《“\n\t“;
cout《《setw(5)《《j;
}
cout《《“\n\t“;
for (k=0;k《35;k++) //输出一条横线
cout《《“-“;
initweek=(initweek+day[i]%7)%7; //计算下一个月1号的星期号
}
cout《《endl;
}
//判断year年份是否为闰年
int leap(int year)
{
int leap;
if(year%400==0)
leap=1;
else if(year%4==0 && year%100!=0)
leap=1;
else leap=0;
return leap;
}
//计算year年的1月1日是星期几
int week(int year)
{
int i,leapyears=0,totalday;
for (i=1900;i《year;i++) //计算从1900年到当前的前一年一共有多少个闰年
if (leap(i)) leapyears++;
totalday=(year-1900)*365+leapyears;
//计算从1900年到当前年的前一年一共有多少天
return (totalday%7+1);
}
-万年历代码

java程序的万年历编程代码


public static void main(String args) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2012);
calendar.set(Calendar.MONTH,1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
int first = calendar.get(Calendar.DAY_OF_WEEK) - 1;
System.out.println(calendar.get(Calendar.YEAR) + “年“
+ (calendar.get(Calendar.MONTH) + 1) + “月万年历“);
System.out.println(“日\t一\t二\t三\t四\t五\t六“);
for (int i = 0; i 《 first; i++) {
System.out.print(“ \t“);
}
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int i = 0; i 《 maxDay; i++) {
if (first / 7 == 1) {
first = 0;
System.out.println();
}
System.out.print(i + 1
+ (first / 6 == 1 || i == maxDay - 1 ? ““ : “\t“));
first++;
}
}
-万年历代码

万年历查询程序. C语言代码


除了天数差计算,基本上是完成了你所提出的功能(天数差计算其实已经提供了年内序数计算方方法,可以在此基础上完善即可)。包含星期计算、公历转农历、农历转公历、节气查询。数据与算法均为原创,绝非网上复制而来。附件中有源代码,同时附带农历数据提取工具,可提取1600到7000年之间的任意年份区间,提取后的数据为压缩数据,占用空间小,同时数据包含数九、三伏、入梅和出梅,非常适合写一份完整的万年历。-万年历代码

部分核心算法函数如下:

//判断闰年,参数:年份,返回值:0-平年,1-闰年
int IsLeapYear(int iYear);
//计算日期在年内的序数,参数:年,月,日,年内序数,返回值:0-失败,1-成功
int GetDaysNumInYear(int iYear, int iMonth, int iDay,int *nDays);
//从年内序数计算月、日,参数:年,年内序数,月,日,返回值:0-失败,1-成功
int GetDateFromDays(int iYear, int nDays, int *iMonth, int *iDay);
//检验年、月、日的合法性,参数:年,月,日,返回值:0-失败,1-成功
int DateCheck(int iYear,int iMonth,int iDay);
//获取农历新年的公历年内序数,参数:农历年,返回值:农历新年的公历年内序数
int LunarGetNewYearOrdinal(int iLunarYear);
//获取农历月的天数,参数:农历年,农历月,是否为闰月,返回值:该农历月的天数,为0代表参数无效
int LunarGetDaysofMonth(int iLunarYear,int iLunarMonth,int IsLeapMonth);
//展开大小月数据表(某一年的),参数:农历年,从上一年十一月开始到当前年份(闰)十二月的每月天数,返回值:0-失败,1-成功
int LunarExpandDX(int iLunarYear,int iDayOfMonth);
//获取农历某一年的闰月情况,参数:农历年,返回值,该年的闰月月份,0表示无闰月
int LunarGetLeapMonth(int iLunarYear);
//公历转农历,参数:公历年、月、日,农历年、月、日,是否为闰月,返回值:0-失败,1-成功
int Gongli2Nongli(int iYear,int iMonth,int iDay,int *iLunarYear,int *iLunarMonth,int *iLunarDay,int *iIsLeapMonth);
//农历转公历,参数:家历年、月、日,是否为闰月,公历年、月、日,返回值:0-失败,1-成功
int Nongli2Gongli(int iLunarYear,int iLunarMonth,int iLunarDay,int iIsLeapMonth,int *iYear,int *iMonth,int *iDay);
//得到指定年份的节气信息,首个是小寒
int GetJieQi(int iYear,int uMonth,unsigned int uJieQi);
//计算星期
unsigned int GetDayOfWeek(int iYear,int uMonth,int uDay);

源代码请看

-万年历代码


用C语言怎么编写万年历


1、首先下载安装Notepad++,这是一款免费的且能够编辑C语言的软件。

2、然后下载安装tdm-gcc,这是为了给电脑配置环境变量,以便能够编译C语言的。

3、在安装完以上两款软件后,还要配置一下环境变量。

4、然后开始编辑C语言万年历,首先要判断一个年份是闰年还是平年,用一个子程序来做:

5、然后就开始写主程序:首先用scanf得到一个年份,在判断这个年份是平年还是闰年后用printf在CMD中打出来。

6、在编写完成后,在Notepad++界面下按下F5,在输入框中输入:

cmd /k gcc -o “$(CURRENT_DIRECTORY)\$(NAME_PART).exe“ “$(FULL_CURRENT_PATH)“ && CLS && “$(CURRENT_DIRECTORY)\$(NAME_PART).exe“ & PAUSE & EXIT-万年历代码

7、最后点击运行,会弹出CMD,在里面输入年份后回车:例如输入2017,然后回车,就会生成2017年的万年历了!


万年历代码 c语言


你试一下下面这个代码吧
#include 《stdio.h》
#define LMonth 31
#define SMonth 30
#define VMonth 28
typedef enum {
Sun,
Mon,
Jue,
Wed,
Thu,
Fri,
Sat
} WEEK;
typedef enum {
January =1,
February,
Match,
Apirl,
May,
June,
July,
August,
September,
October,
November,
December
} MONTH;
void printMonHead(void)
{
printf(“ Sun Mon Jue Wed Thu Fri Sat\n“);
}
void printMonth(const WEEK firstDay, int length )
{
WEEK weekDay = firstDay %7;
int i;
printMonHead();
for (i=0; i《weekDay;++i)
{
printf(““);
}
for(i=1;i《=length;++i)
{
weekDay = (++weekDay)%7;
printf(“%7d“, i);
if(weekDay==0) printf(“\n“);
}
printf(“\n“);
}
int isLeapYear(const int yr)
{
return ( yr%( yr%100?4:400) ?0 : 1);
}
int getYearDay(const int year)
{
int lastYear = year-1;
int yearNum = lastYear-1899;
int walker,counter=0;
for(walker=1900; walker 《 year; ++walker)
{
if(isLeapYear(walker)==1)
++counter;
}
return (365*yearNum+counter+1)%7;
}
void printYear(const int y)
{
WEEK yDay = getYearDay(y);
int vDay = isLeapYear(y);
int monWeeks;
int monLen ;
monLen=0;
monLen[January]=31; monLen[February]=28+vDay; monLen[Match]=31;
monLen[Apirl]=30; monLen[May]=31; monLen[June]=30;
monLen[July]=31; monLen[August]=31; monLen[September]=30;
monLen[October]=31; monLen[November]=30; monLen[December]=31;
monWeeks=0;
monWeeks[January] = yDay;
monWeeks[February] = ((monWeeks[January] +monLen[January] )%7);
monWeeks[Match] = ((monWeeks[February] +monLen[February] )%7);
monWeeks[Apirl] = ((monWeeks[Match] +monLen[Match] )%7);
monWeeks[May] = ((monWeeks[Apirl] +monLen[Apirl] )%7);
monWeeks[June] = ((monWeeks[May] +monLen[May] )%7);
monWeeks[July] = ((monWeeks[June] +monLen[June] )%7);
monWeeks[August] = ((monWeeks[July] +monLen[July] )%7);
monWeeks[September] = ((monWeeks[August] +monLen[August] )%7);
monWeeks[October] = ((monWeeks[September] +monLen[September] )%7);
monWeeks[November] = ((monWeeks[October] +monLen[October] )%7);
monWeeks[December] = ((monWeeks[November] +monLen[November] )%7);
int i;
for(i=January; i《=December; ++i)
{
if (i%3==0)
{
printf(“请按任意键继续...“);
}
printf(“\n-------------------------------------------------\n“);
printf(“ %d, %d \n“,y,i);
printf(“-------------------------------------------------\n“);
printMonth(monWeeks[i],monLen[i]);
printf(“\n“);
}
return;
}
int main(void)
{
// int y3 = 2000;
// int y3 = 1946;
// printYear(y3);
int y;
int quit=0;
do
{
printf(“Please enter which Year to Print For You (0 to quit): “);
scanf(“%d“,&y);
printf(“\n“);
if(y==0)
quit =1;
else
printYear(y);
}while(!quit);

return 0;
}
-万年历代码