输出万年历
你可以把万年历拆开来看一下,里面有一个变压器,上面应该有电压标记,一般是直流12v。变压器不能用电子的,很容易坏的。
import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CalendarTest {
public static void main(String[] args) {
GregorianCalendar d=new GregorianCalendar();
for(int i=0;i<=Calendar.DECEMBER;i++){
d.set(Calendar.MONTH, i);
System.out.println(d.get(Calendar.MONTH)+1+"月");
showMonth(d);
}
}
private static void showMonth(GregorianCalendar d) {
//construct d as current date
int today=d.get(Calendar.DAY_OF_MONTH);
int month=d.get(Calendar.MONTH);
//set d to start date of the month
d.set(Calendar.DAY_OF_MONTH, 1);
int weekday=d.get(Calendar.DAY_OF_WEEK);
//get first day of week(Sunday )
int firstDayOfWeek=d.getFirstDayOfWeek();
//determine the required indentation for the first line
int indenct=0;
while(weekday!=firstDayOfWeek){
indenct++;
d.add(Calendar.DAY_OF_MONTH,-1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
//print weekday name
String[] weekdayNames=new DateFormatSymbols().getShortWeekdays();
do{
System.out.printf("%4s",weekdayNames[weekday]+"");
d.add(Calendar.DAY_OF_WEEK,1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}while(weekday!=firstDayOfWeek);
System.out.println();
//print space
for(int i=0;i<indenct;i++){
System.out.print("");
}
d.set(Calendar.DAY_OF_MONTH, 1);
do{
//print day
int day=d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d",day);
//mark current day with *
if(day==today){
System.out.print("*");
}else{
System.out.print("");
}
//advance d to the next day
d.add(Calendar.DAY_OF_MONTH, 1);
weekday=d.get(Calendar.DAY_OF_WEEK);
//start a new line at the start of the week
if(weekday==firstDayOfWeek){
System.out.println();
}
}while(d.get(Calendar.MONTH)==month);
//the loop exists when d id day 1 of the next money
//print final end of line if necessary
if(weekday!=firstDayOfWeek){
System.out.println();
}
}
}
你试试我尝试过没有问题
可以按左右方向键,翻到上一月或下一月
可以按上下方向键,翻到上一年或下一年
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
int leap(int year )
{
if ((year %4 == 0) && (year % 100 != 0)
|| (year % 400 == 0))
{
return 1;
}
return 0;
}
void show(int year,int month)
{
const char month_str[][4]={"","Jan","Feb","Mar","Apl",
"May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
const int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,j,wdays,mdays,days;
for(i=1,days=0;i<year;i++)
{
if(leap(i))
{
days += 366;
}
else
{
days += 365;
}
}
for(i=1;i<month;i++)
{
if(i==2 && leap(year))
{
days+=29;
}
else
{
days+=month_day[i];
}
}
printf(" %s (%d)\n",month_str[month],year);
printf(" Mon Tue Wed Thu Fri Sat Sun\n");
wdays = days % 7;
for( j = 0; j < wdays; j++)
{
printf(" ");
}
if(month == 2 && leap(year))
{
mdays=29;
}
else
{
mdays= month_day[month];
}
for(i=1;i<=mdays;i++)
{
if( i > 1 && days % 7 == 0 )
{
printf("\n");
}
printf("%4d",i);
days=days+1;
}
printf("\n---------------------------\n");
}
main()
{
time_t rawtime;
struct tm *info;
int year,month;
char ch;
time ( &rawtime );
info = localtime ( &rawtime );
year =info->tm_year + 1900;
month =info->tm_mon + 1;
while(1)
{
show(year,month);
printf("Left....Prev Month\n");
printf("Right...Next Month\n");
printf("Up......Prev Year\n");
printf("Down....Next Year\n");
printf("Esc.....Exit\n");
ch=getch();
switch(ch)
{
case 27://Ecs
exit(0);
case -32://Navigator
ch=getch();
if(ch==77)
{//Right
year+=(month==12)?1:0;
month=month%12+1;
}
else if(ch==75)
{//Left
year-=(month==1)?1:0;
month=(month-2+12)%12+1;
}
else if(ch==72)
{//Up
year--;
}
else if(ch==80)
{//Down
year++;
}
system("cls");
}
}
}
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define X " Sun Mon Tue Wed Thu Fri Sat"
void menu()
{
system("cls");
printf("\nTHIS IS THE MENU OF THE PROGRAM !");
printf("\nYOU CAN CHOOSE THE NUMBER FOR THE FUNCTIOM:");
printf("\n\n");
printf("1 Find the day by year-month-date.\n");
printf("2 Find out whether the year you input is a leap year.\n");
printf("3 Print the calendar of the year you input.\n");
printf("4 Exit.\n\n");
printf("Input your choice:");
}
int getday(int year,int month,int date)
{
int isleap(int year);
int flag,s,i;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int cont=0;
flag=isleap(year);
if(flag==1)
a[2]++;
for(i=1;i<month;i++)
{
cont=cont+a[i];
}
cont=cont+date;
s=year+1+(year-1)/4+(year-1)/100+(year-1)/400+cont;
return s%7;
}
int isleap(int year)
{
if(year%4==0&&year%100||year%400==0)
return 1;
else
return 0;
}
void print(int n)
{
int i;
for(i=0;i<n;i++) printf(" ");
}
int day(int year)
{
long a,b;
if(year<=2000)
{
a=2000-year;
b=6-(a+a/4-a/100+a/400)%7;
return b;
}
else
{
a=year-2000;
b=(a+1+(a-1)/4-(a-1)/100+(a-1)/400)%7+6;
return b%7;
}
}
void printcalendar(int year)
{
int i,j,k,m,n,f1,f2,d;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
printf("\nThe calendar of the year %d.\n\n",year);
d=day(year);
if(isleap(year)==1)
a[2]++;
for(i=1;i<=12;i+=2)
{
m=0; n=0; f1=0; f2=0;
switch(i)
{
case 1:printf(" Januray 1 ");break;
case 3:printf(" March 3 ");break;
case 5:printf(" May 5 ");break;
case 7:printf(" July 7 "); break;
case 9:printf(" September 9 ");break;
case 11:printf(" Nevember 11 ");break;
}
print(21);
switch(i+1)
{
case 2:printf(" February 2 "); break;
case 4:printf(" April 4 "); break;
case 6:printf(" June 6 "); break;
case 8:printf(" August 8 "); break;
case 10:printf(" October 10 "); break;
case 12:printf(" December 12"); break;
}
printf("\n");
printf(X);
print(6);
printf(X);
printf("\n");
for(j=0;j<6;j++)
{
if(j==0)
{
print(d*4);
for(k=0;k<7-d;k++)
{
printf("%4d",++m);
}
print(6);
d+=a[i]%7;
d%=7;
print(d*4);
for(k=0;k<7-d;k++)
{
printf("%4d",++n);
}
printf("\n");
}
else
{
for(k=0;k<7;k++)
{
if(m<a[i])
{
printf("%4d",++m);
}
else
{
print(4);
}
if(m==a[i]) f1=1;
}
print(6);
for(k=0;k<7;k++)
{
if(n<a[i+1])
{
printf("%4d",++n);
}
else
{
print(4);
}
if(n==a[i+1]) f2=1;
}
printf("\n");
if(f1&&f2) break;
}
}
d+=a[i+1]%7;
d%=7;
printf(" ");
for(k=0;k<27;k++)
{
printf("=");
}
print(6);
printf(" ");
for(k=0;k<27;k++)
{
printf("=");
}
printf("\n");
if(i==5)
{
printf("Press any key to others!");
getch();
system("cls");
}
}
}
void main()
{
int choice;
int year,month,date;
int day,flag;
char con;
menu();
scanf("%d",&choice);
if(choice==1)
{
r1:system("cls");
printf("\nPlease input the year-month-date(XXXX,XX,XX):");
scanf("%d,%d,%d",&year,&month,&date);
day=getday(year,month,date);
if(day==0)
printf("\n%d-%d-%d is Sunday!\n",year,month,date);
if(day==1)
printf("\n%d-%d-%d is Monday!\n",year,month,date);
if(day==2)
printf("\n%d-%d-%d is Tuesday!\n",year,month,date);
if(day==3)
printf("\n%d-%d-%d is Wednesday!\n",year,month,date);
if(day==4)
printf("\n%d-%d-%d is Thursday!\n",year,month,date);
if(day==5)
printf("\n%d-%d-%d is Friday!\n",year,month,date);
if(day==6)
printf("\n%d-%d-%d is Saturday!\n",year,month,date);
printf("\nContinue...(Y/N)");
con=getch();
if((con=='y')||(con=='Y'))
goto r1;
if((con=='n')||(con=='N'))
main();
}
if(choice==2)
{
r2:system("cls");
printf("\nPlease input the year(XXXX):");
scanf("%d",&year);
flag=isleap(year);
if(flag==1)
printf("\nThe year %d is leap year!\n",year);
if(flag==0)
printf("\nThe year %d is not leap year!\n",year);
printf("\nContinue...(Y/N)");
con=getch();
if((con=='y')||(con=='Y'))
goto r2;
if((con=='n')||(con=='N'))
main();
}
if(choice==3)
{
r3:system("cls");
printf("\nPlease input the year(XXXX):");
scanf("%d",&year);
printcalendar(year);
printf("Continue...(Y/N)");
con=getch();
if((con=='y')||(con=='Y'))
goto r3;
if((con=='n')||(con=='N'))
main();
}
if(choice==4)
{
system("cls");
printf("\nDo you want to Exit?(Y/N)");
con=getch();
if((con=='y')||(con=='Y'))
return;
if((con=='n')||(con=='N'))
main();
}
}
/*
【要求】:
1. 程序运行后,首先在屏幕上显示主菜单:
1. 查询某年某月某日是星期几
2. 查询某年是否是闰年
3. 打印某年的全年日历
4. 退出
2. 在主菜单中输入1后,显示:
“请输入年月日(XXXX,XX,XX)”
运行后输出:XXXX年XX月XX日是星期X,是否继续查询(Y/N)?
如果输入Y,则重新显示 “请输入年月日(XXXX,XX,XX)”,否则回到主菜单。
3. 在主菜单中输入2后,显示:
“请输入要查哪一年?(XXXX)”
运行后输出:XXXX年是(否)是闰年,是否继续查询(Y/N)?
如果输入Y,则重新显示,“请输入要查哪一年?(XXXX)”,否则回到主菜单。
4. 在主菜单中输入3后,显示:
“请输入要打印的年份(XXXX)”
运行后输出XXXX年的日历,格式为:
XXXX
X(月数)
0 1 2 3 4 5 6
S M T W T F S
x x x x x x x
x x x xx xx xx xx
xx xx xx xx xx xx xx
xx xx xx xx xx xx xx
xx xx xx
X(月数)
0 1 2 3 4 5 6
S M T W T F S
x x x x
x x x xx xx xx xx
xx xx xx xx xx xx xx
xx xx xx xx xx xx xx
xx xx xx xx xx
.
运行完后显示:“是否继续打印(Y/N)?”
如果输入Y,则重新显示,“请输入要打印的年份(XXXX)”,否则回到主菜单。
5. 在主菜单中输入4后,显示:“是否要真的退出(Y/N)?”
如果输入Y,结束程序运行,否则重新显示主菜单。
*/
#include "stdio.h"
long int f(int year,int month)
{/*f(年,月)=年-1,如月<3;否则,f(年,月)=年*/
if(month<3) return year-1;
else return year;
}
long int g(int month)
{/*g(月)=月+13,如月<3;否则,g(月)=月+1*/
if(month<3) return month+13;
else return month+1;
}
long int n(int year,int month,int day)
{
/*N=1461*f(年、月)/4+153*g(月)/5+日*/
return 1461L*f(year,month)/4+153L*g(month)/5+day;
}
int w(int year,int month,int day)
{
/*w=(N-621049)%7(0<=w<7)*/
return(int)((n(year,month,day)%7-621049L%7+7)%7);
}
int date[12][6][7];
int day_tbl[ ][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
main()
{int sw,leap,i,j,k,wd,day;
int year;/*年*/
char title[]="SUN MON TUE WED THU FRI SAT";
clrscr();
printf("Please input the year whose calendar you want to know: ");/*输入年*/
scanf("%d%*c",&year);/*输入年份值和掠过值后的回车*/
sw=w(year,1,1);
leap=year%4==0&&year%100||year%400==0;/*判闰年*/
for(i=0;i<12;i++)
for(j=0;j<6;j++)
for(k=0;k<7;k++)
date[i][j][k]=0;/*日期表置0*/
for(i=0;i<12;i++)/*一年十二个月*/
for(wd=0,day=1;day<=day_tbl[leap][i];day++)
{/*将第i+1月的日期填入日期表*/
date[i][wd][sw]=day;
sw=++sw%7;/*每星期七天,以0至6计数*/
if(sw==0) wd++;/*日期表每七天一行,星期天开始新的一行*/
}
printf("\n|==================The Calendar of Year %d =====================|\n|",year);
for(i=0;i<6;i++)
{/*先测算第i+1月和第i+7月的最大星期数*/
for(wd=0,k=0;k<7;k++)/*日期表的第六行有日期,则wd!=0*/
wd+=date[i][5][k]+date[i+6][5][k];
wd=wd?6:5;
printf("%2d %s %2d %s |\n|",i+1,title,i+7,title);
for(j=0;j<wd;j++)
{
printf(" ");/*输出四个空白符*/
/*左栏为第i+1月,右栏为第i+7月*/
for(k=0;k<7;k++)
if(date[i][j][k])
printf("%4d",date[i][j][k]);
else printf(" ");
printf(" ");/*输出十个空白符*/
for(k=0;k<7;k++)
if(date[i+6][j][k])
printf("%4d",date[i+6][j][k]);
else printf(" ");
printf(" |\n|");
}
/*scanf("%*c");/*键入回车输出下一个月的日历*/
}
puts("=================================================================|");
puts("\n Press any key to quit...");
getch();
}
盲人算命时如何算出万年历的?有什么口诀?
盲人算命首先要背六十花甲子,根据一年的立春日和十二个月的大小月,再根据花甲子的排列顺序去推的,他们得好几年才能够学通,他们也不容易啊。
万年历是谁制作出来的?
万年历的发明人不确定,只有一个关于发明的传说。相传,在很久以前,有个名叫万年的青年,看到当时节令很乱,想把节令定准。一天,他上山砍柴,坐在树阴下休息,树影的移动启发了他,他设计了一个测日影计天时的晷仪。可是,天阴雨雾,影响测量。后来,山崖上的滴泉引起了他的兴趣,他又动手做了一个...
万年历是怎么编出来的?万年历里的宜忌又是怎么算的?
农历编制标准是《农历的编算和颁行》(GB\/T 33661-2017),由紫金山天文台起草,简称紫金历。调整为东八区区时。紫金山天文台发布过万年历,最新版为《1901-2100年-大众万年历》。关于万年历的编制和历史沿革,天文台官网有一篇09年的报道《紫金山天文台编算出新中国第一部天文年历》,可查阅。万年历...
万年历哪个版本最准确
1. 《墨迹万年历》被认为是最准确的万年历版本之一。2. 该版本提供了详细的黄历信息,并对黄历中的专业术语进行了解释,方便老年人理解。3. 然而,万年历的准确性可能会受到多种因素的影响,如农历与阳历的转换和节气变化等。4. 《墨迹万年历》是一款综合性的生活工具应用,集成了日历、黄历、天气、...
万年历和黄历的区别
这个区别有:历史起源不同,时间跨度不同。1、历史起源不同,万年历源自商朝国君祖乙命万年观测日月变化,万年经过长期观察,精心推算,制定出了准确的太阳历,国君为嘉奖其作为,将太阳历命名为“万年历”。而黄历(老黄历)则是由于上古时代人们在岁星纪年和占卜的基础上设想天体运行变化所得,直到唐代才...
万年历日历黄道吉日
黄道吉日,亦称六神所在的日子,是适合进行某些活动的日子。如何使用万年历来查找黄道吉日?请随小编在下文的说明中详细了解,并自行实践。万年历查询黄道吉日的步骤如下:1. 黄道吉日是指进行如嫁娶、祭祀、入殓、安葬、出行等活动较为顺利的日子。通常,黄道吉日应以个人的生辰八字为依据,然而在现代,...
民间算命口诀大全
1. 民间算命口诀大全 民间流传着许多关于算命的口诀和技巧,这些口诀往往由盲人算命先生传承并使用。他们通过这些口诀,能够迅速地算出万年历的日期,以及干支纪时的相关信息。这些口诀历史悠久,以往采用师徒间口授方法传授,严禁外传。2. 《银盘子》的秘密 《银盘子》是一种民间术士创造的万年历速算法,...
万年历的由来是什么?
万年历的由来是万年长期观察而来。万年经过长期观察,精心推算,终于制定出了准确的太阳历,当他把太阳历呈奉给继任的国君时,已是满面银须的老人了。国君深为感动,为纪念万年的功绩,便将太阳历命名为“万年历”,封万年为日月寿星,以后,人们在过年时挂上寿星图,据说就是为了纪念德高望重的万年。...
万年历查询黄道吉日方法
黄道吉日,通常是指适合做某些事的日子,也就是六神所在的日子,这样的日子做这件事最为顺利。那么,如何利用万年历来查询黄道吉日呢?下面,感兴趣的人可以随小编一起在下文的叙述中仔细了解一下,随后可以自己实践。万年历查询黄道吉日介绍一黄道吉日也就是办某些事比较顺利的日子,这些事情可指嫁娶、...
万年历谁发明的
详情请查看视频回答
程茗芪胶: 以当前电脑时间为基准,显示当前年月的日历 可以按左右方向键,翻到上一月或下一月 可以按上下方向键,翻到上一年或下一年 #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> int leap(int year ) { if ((year %4 == 0) && ...
龙湾区15882819829: c语言编程:输出万年历(按上下键改变年,按左右键改变月)? - ?
程茗芪胶: 不是我编的,见参考资料#include <stdio.h>#include <stdlib.h> int JudgeLeapYear(int); // 判断是否为闰年 int MonthDay(int m,int y); // 返回本月的天数 void printHeader(void); // 输出表头 int FirstWeek(int m,int y);// 返回本月一号是星期几e79fa...
龙湾区15882819829: 如何用c语言做一个万年历? - ?
程茗芪胶: 想要就拿去吧! #include #include char* month_str[]={"January","February","March","April","May","June","July","August","September","October","November","December"}; char* week[]={"Sunday","Monday",...
龙湾区15882819829: 如何用C/C++输出如下万年历 - ?
程茗芪胶: 可以用公式 ((year-1)+(year-1)/4-(year-1)/100+(year-1)/400+date)%7 计算任意一天是星期几.year是年份,date表示这天一年中的是第几天.下面是我根据这原理自己写的程序:#include<iostream> #include<string> #include<iomanip...
龙湾区15882819829: 万年历的C语言程序 - ?
程茗芪胶: 已经编译运行确认过.#include <stdio.h> #include <stdlib.h> int leap(int); /*判断是否为闰年*/ int md(int m,int y); /*返回本月的天数*/ void prtweek(void); /*输出表头*/ int fw(int m,int y); /*返回本月一号是星期几*/ void prtmonth(int m); /*输出月...
龙湾区15882819829: 怎么用C语言写万年历,输出一个月份,显示下个月和上个月的日历情况啊? - ?
程茗芪胶: 这是我原来的代码,可运行,你看着改吧,C++写的.#include"iostream"#include"iomanip"#include"windows.h" using namespace std; int tab[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31} }; ...
龙湾区15882819829: 万年历 C语言 急!!! - ?
程茗芪胶: #include "stdio.h" long int f(int year,int month) {/*f(年,月)=年-1,如月
龙湾区15882819829: C语言编写万年历 - ?
程茗芪胶: #include"stdio.h" void print(int);//函数声明 int dobb(int); int date(int,int,int); void main() { int year=0; printf("输入打印的年份(XXXX)\n"); scanf("%d",&year); print(year); } int dobb(int year)//闰年判断 { if((year%4==0 && year%100!=0)...
龙湾区15882819829: C语言万年历 - ?
程茗芪胶: #include long int f(int year,int month) {//f(年,月)=年-月,如月 if (monthreturn year-1; else return year; } long int g(int month) {//g( 月)=月+13,如月 if(month return month + 13; else return month + 1; } long int n(int year,int month,int day) { return ...
龙湾区15882819829: 用c语言编写万年历 - ?
程茗芪胶: 已经编译运行确认过. #INCLUDE#INCLUDEINT LEAP(INT); /*判断是否为闰年*/ INT MD(INT M,INT Y); /*返回本月的天数*/ VOID PRTWEEK(VOID); /*输出表头*/ INT FW(INT M,INT Y); /*返回本月一号是星期几*/ VOID PRTMONTH(INT M); ...