电子数码万年历时间怎么调整?
首先找到万年历的设置键,按下设置键后就可以设置时间了,同时万年历的年份会闪烁,只需使用+-键来调节年份即可。调节好年份之后,再次按下设置键,接着月份会闪烁,继续使用+-键调节月份,然后再使用同样的方法调节其他时间就可以了。当所有的时间都设置好后,不能直接退出,需要再次按下设置键,才可以修改调节成功,对于这一点还是需要了解的。而且设置万年历的时间,只需设置年、月、日、时、分、秒就可以了,而星期或者农历时间会自动调整的,相对来说也是比较方便的。【摘要】
电子数码万年历时间怎么调整?【提问】
哈喽哈喽,您好!很高兴为您解答难题~ 请您稍后,我正在快马加鞭的为您整理答案,五分钟回复您~【回答】
首先找到万年历的设置键,按下设置键后就可以设置时间了,同时万年历的年份会闪烁,只需使用+-键来调节年份即可。调节好年份之后,再次按下设置键,接着月份会闪烁,继续使用+-键调节月份,然后再使用同样的方法调节其他时间就可以了。当所有的时间都设置好后,不能直接退出,需要再次按下设置键,才可以修改调节成功,对于这一点还是需要了解的。而且设置万年历的时间,只需设置年、月、日、时、分、秒就可以了,而星期或者农历时间会自动调整的,相对来说也是比较方便的。【回答】
如果我的回答帮助到了您,请在稍后结束时,给我一个赞(★★★★★)。谢谢!【回答】
哈喽哈喽,您好!很高兴为您解答难题~ 请您稍后,我正在快马加鞭的为您整理答案,五分钟回复您~【回答】
电子数码万年历的解决办法有哪些
电子数码万年历有时经常发生故障,那么它基本上会产生哪些故障,如果发生故障该怎样解决呢?一起和我来看个究竟吧。以下是我为你整理的电子数码万年历常见故障及解决办法,希望能帮到你。 电子数码万年历常见故障及解决办法 第一,电子数码万年历出现不通电现象;该故障多为供电部分损坏。供电方式有两种:变压器式、开关电源。测量变压器次极有无电压,可以判断变压器好坏;用万用表直流10V档位测量其输出电压,如无电压,则开关电源损坏。 第二,出现电子数码万年历死机的现象;此故障多为电压不稳和其他干扰造成的,首先更换记忆电池,可排除多数情况下的故障;仍不工作,接通市电,拔下电源与主板连线,再次插上,部分死机故障可以恢复正常;若还不工作,可以在不通电的情况下,用镊子短路主板上的所有滤波电容,通电看是否正常工作,最后检查晶振,可以用石英钟表芯里的代换。 第三,出现走时不准现象;5V电压低,记忆电池欠压,晶振性能不良,修理电源使其恢复正常,更换电池,更换晶振。 第四、线路板不亮 方法:线路板不亮也就是显示时间、日期的部分不工作,那么很可能是变压器超负载烧了,要更换变压器。 第五、再次通电时间和日期出错 方法:这是很长见得故障,很可能是线路板自带的圆形电子没电了,在这里也提醒大家数码万年历买回来就要用,长时间不用很可能会耗尽其自带的电量,那样的话就失去了其记忆功能,一句话总结就是:数码万年历这样的产品怕放不怕用。 家用数码万年历的时间调整方法 数码万年历调节器有四个键,分别为:退出、流水(下调)、上调、设置。 一、先按一下“设置”键(进入时间设置状态,同时年份“闪烁”,可按“上调”或“流水(下调)”键修改年份,修改好后按“设置”键将闪烁位移到公历“月”,按“上调”或“流水(下调)”键修改月份;用同样的方法可对日、时、分、秒进行设置; 星期、农历月、日将自动跟随公历的变化而变化。 二、再按“设置”或“退出”键退出时间设置,回到正常时间状态。 有关于选购电子万年历的方面 从产品外观工艺方面 在选购电子万年历时,首先从产品的外观着眼,产品有无缺陷和破损(例如玻璃和底壳等),面版印刷是否整洁、有光泽,线条是否清晰;显示窗口有无明显的异物遮挡等; 从产品包装方面 产品的包装也能反映出产品的档次和整个生产厂商对品质的要求,从包装的防震结构、印刷工艺和材质的选择了解,一般对品质要求比较高的企业在产品包装方面也是有比较高的要求,所以包装物的好坏反映了产品品质的好坏; 其次从产品标识方面 产品标识是指表明产品的名称、产地、生产者名称、地址、产品的质量状况、保存期限、使用说明等信息情况的表述和指示。产品标识由生产者提供。产品的标识是产品的生产者给产品的销售者、购买者的质量信息,帮助他们了解产品的成分、质量、所执行的标准(注:《电子万年历》国家标准:GB/T 22777-2008),说明产品的使用、保养条件,起到了介绍产品、指导消费的作用。许多产品标识的内容都标注在产品或者产品的包装上,让人一目了然,为用户、消费者的挑选提供了方便。随着经济的发展和产品的市场竞争的激化,产品的标识越来越重要,它已经成为产品的组成部分。 产品标识的标注不当或者标注带有欺骗性的标识,会给用户、消费者造成误解,给他人以不便,严重的还会造成侵权损害,引起产品质量责任纠纷。所以,消费者在选购产品时一定要注意看产品标识。 从产品认证方面 产品认证制度起源于20世纪初的英国,随着时代的变迁,已成为国际上通行的、用于产品安全、质量、环保等特性评价、监督和管理的有效手段。当今的消费者在购买令人放心的商品时。除了考虑一定的性价比,他们的消费期望越来越与产品的安全、质量以及环境等方面的要求联系在一起。所以在选购电子万年历时要注意查看产品的相关认证,如:3C认证,AAA级 中国质量信用企业, ISO质量管理模式认证,(CQC)中国质量认证,(PICC)承保产品安全质量保障等等。 从产品功能方面 产品的显示功能,包括公历年、月、日,时间、温度、星期、农历等等;附带功能有:整点闹铃、定时闹铃、以及按钮是否可以正常调动; 从产品性能方面 即产品稳定性、安全性和适用性,产品的稳定性是指电子万年历内部电子板硬件与软件,硬件与硬件之间的兼容性,表现为LED数码的驱动是静态或动态,显示为是否出现闪动,断笔等情况;产品的安全性取决于产品是否通过相关的安全认证,具有防震,防火,防暴等情况;产品的适用性,因产品有多种系列,多种规格,产品的材料也分有玻璃,塑料,铝合金等等。所以在选购的时间可以根据摆放的场合选购合适的产品。 从产品附带资料 检查产产品附带的电源线,说明书,保修卡,合格证等是否齐全。 从商家的服务方面 包括售前服务、售中服务以及售后服务等,从选购产品时商家给予的指导和建议;从产品使用过程中情况的回访服务,从产品的质量保障,保修期限,如何提供相关售后服务等等来考察。
用c语言编写万年历
写万年历程序,您需要先了解万年历的特点
下面是万年历的特点(复制粘贴的):
1. 平年365天(52周+1天),闰年366天(52周+2天)。平年2月28天,闰年2月29天。
由于公元1月1日设为星期六,故3月1日为星期三。 ——注意这个“三”
为使算法达到最简,故本算法以“星期”为计算单位。且选3月1日为基月。
2. 每400年整一闰,或每4年且不为百年的一闰。(原因:地球绕太阳一周的时间是365天5小时46秒,为了使一年的天数为整数,将一年的天数定为365天,余下的时间积累起来,四年就是23小时15分4秒,将近一天,把这一天加在某年的二月而成29天,该年称为闰年,其它年称为平年。但四年加一天又多用了44分56秒,这个数积满400年为三天。因此400年中只能有97个闰年,所以凡能被400整除,或不能被100整除但能被4整除的年份为闰年。)
所以百年%4=0闰或(年%4=0并且年0)闰。
3. 每 4年(3个平年+1个闰年)共208周+5天 ——注意这个“5天”
每百年共100*(208周+5天)-1天=5217周+5天 ——注意这个“5天”(整百年暂设为平年)
每400年共4*(5217周+5天)+1天(整400年闰)=20871周+0天——注意这个“0天”和“1天”(4个整百年只有一个闰年)
即400年一轮回!(原来万年历400年前是一家)
至于你说的日期和星期对齐,给你一点思路参考:每一行是7天,可以设定每一天占10个字符(同时上面的星期也得占满10个字符),假设本月第一天是星期4,那么在输出1之前需要先输出10×3个字符来占位,当输出星期天的日期之后换行,之后的就简单了
用C语言怎么编写这个万年历
核心算法:星期(0~6)=(年份系数+月份系数+日期)%7;其中,年份系数我以2007年做参照,已知2007年,年份系数是0,往前往后分别是递减和递增。增减规律:非闰年为±1,闰年1~2月-2或+1,闰年3~12月+2或者-1。其中,12个月份系数对应:0,3,3,6,1,4,6,2,5,0,3,5。根据以上规律,只要利用循环,就可以的到对应系数和星期。日历实现翻页功能,按键盘左右方向键可以翻译查看当年其他月份,按向上方向键可以返回菜单。下面是代码:#include #include #include #include #include #include #define XY 2007#define X07 0//以2007年年系数0做参照int isLeapYear(int year);//判断是否是闰年,是返回1,否返回0int addyx(int yx,int n);//年系数自增,0~6,n:自增的跨度,返回自增后的年系数int getYX(int year,int month);//获得年系数0~6int getMX(int month);//获得月系数int getWeek(int yx,int mx,int day);//通过年月系数(yx:年系数;mx:月系数)及日期获取星期char *getStrWeek(int yx,int mx,int day);//通过年月系数(yx:年系数;mx:月系数)及日期获取星期对应的中文字符串int getMaxDay(int year,int month);//通过年月获取当月最大天数void prCalendar(int year,int month);//打印日历int showMeun();//打印主菜单int getDuration(int year,int month,int day);//通过日期获取距今天数int calendar[6][7];int main(){//int year,month,day,yx,mx;while(1){if(!showMeun())break;}return 0;}int showMeun()//打印主菜单{int n,year,month,day,yx,mx;while(1){system("cls");printf("1、输入年份,显示该年每个月的日历\n");printf("2、输入年月,显示该月的天数\n");printf("3、输入日期,显示距离今天的天数\n");printf("4、输入日期,查询这一天是星期几\n");printf("0、结束程序\n");n=-1,year=0,month=0,day=0;while(n4){printf("请输入选择的菜单序号:");scanf("%d",&n);}switch(n){case 1:while(year9999)printf("请输入年份:"),scanf("%d",&year);prCalendar(year,1);break;case 2:while(year9999 || month12)printf("请输入年份及月份:"),scanf("%d%d",&year,&month);printf("%4d年%2d月共有%d天\n按任意键继续。。。。。。\n",year,month,getMaxDay(year,month)),getch();break;case 3:while(year9999 || month12 || daygetMaxDay(year,month))printf("请输入日期:"),scanf("%d%d%d",&year,&month,&day);printf("距离今日有%d天\n按任意键继续。。。。。。\n",getDuration(year,month,day)),getch();break;case 4:while(year9999 || month12 || daygetMaxDay(year,month))printf("请输入日期:"),scanf("%d%d%d",&year,&month,&day);yx=getYX(year,month);mx=getMX(month);printf("%4d年%2d月%2d日是%s\n按任意键继续。。。。。。\n",year,month,day,getStrWeek(yx,mx,day)),getch();break;case 0:return 0;}}return n;}void prCalendar(int year,int month)//打印日历{char c1,c2;int i,j,*p=NULL,yx,mx,cnt,w,maxDay;while(1){p=&calendar[0][0];yx=getYX(year,month),mx=getMX(month);cnt=0,w=getWeek(yx,mx,1);maxDay=getMaxDay(year,month);for(i=0;i<6;i++)for(j=0;j<7;j++){if(cnt<w)p++,cnt++;calendar[i][j]=0;}for(i=1;i<=maxDay;i++)*p=i,p++;system("cls");printf(" %4d 年%2d月 \n",year,month);printf("日 一 二 三 四 五 六\n");for(i=0;i<6;i++,printf("\n"))for(j=0;j<7;j++)if(calendar[i][j]==0)printf(" ");elseprintf("%2d ",calendar[i][j]);printf("\n");printf(" 按向上方向键返回主菜单\n");c1=getch();c2=getch();if(c1==-32 && c2==75)//左键{if(month==1)month=12;elsemonth--;}if(c1==-32 && c2==77)//右键{if(month==12)month=1;elsemonth++;}if(c1==-32 && c2==72)//上键{showMeun();break;}}}int getDuration(int year,int month,int day)//通过日期获取距今天数{int i,y,m,d,sum=0,sum2=0,minY,maxY,minM,maxM,minD,maxD;time_t tt;struct tm *tmp;time(&tt);tmp=localtime(&tt);y=1900+tmp->tm_year,m=1+tmp->tm_mon,d=tmp->tm_mday;//获取当前日期的年月日if(year<y)minY=year,maxY=y,minM=month,maxM=m,minD=day,maxD=d;if(year>y)minY=y,maxY=year,minM=m,maxM=month,minD=d,maxD=day;if(year!=y){for(i=minY;i<maxY;i++)//按相差年份累加(不包含右端最大年份)if(isLeapYear(i))sum+=366;//闰年elsesum+=365;for(i=1;i<minM;i++)//扣除左端年份已过月份对应天数sum-=getMaxDay(minY,i);sum-=minD;//扣除左端当月已过天数for(i=1;i<maxM;i++)//累加右端最大年份已过月份对应天数(不包含最大年份当月)sum+=getMaxDay(maxY,i);sum+=maxD;//累加右端当月已过天数}else//如果年份相同,累加两边一年内已过天数,求差值{for(i=1;i<month;i++)sum+=getMaxDay(month,i);sum+=day;for(i=1;i<m;i++)sum2+=getMaxDay(m,i);sum2+=d;return abs(sum2-sum);}return sum;}int getMaxDay(int year,int month)//通过年月获取当月最大天数{int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};if(isLeapYear(year) && month==2)return days[month-1]+1;return days[month-1];}char *getStrWeek(int yx,int mx,int day)//通过年月系数(yx:年系数;mx:月系数)及日期获取星期对应的中文字符串{int w;static char week[7];memset(week,0,7);strcpy(week,"星期");w=getWeek(yx,mx,day);switch(w){case 0:strcat(week,"日");break;case 1:strcat(week,"一");break;case 2:strcat(week,"二");break;case 3:strcat(week,"三");break;case 4:strcat(week,"四");break;case 5:strcat(week,"五");break;case 6:strcat(week,"六");break;}return week;}int getWeek(int yx,int mx,int day)//通过年月系数(yx:年系数;mx:月系数)及日期获取星期对应的数值0~6{return (yx+mx+day)%7;}int getMX(int month)//获得月系数{int xmonth[12]={0,3,3,6,1,4,6,2,5,0,3,5};//月系数:1-12月,每月的系数。return xmonth[month-1];}int getYX(int year,int month)//获得年系数0~6{int yx=0,nyear=XY,isly,flag;if(nyear==year)return 0;if(nyear<year)flag=0,nyear++;elseflag=1,nyear--;while(1){isly=isLeapYear(nyear);if(!isly){//非闰年年系数累加1if(!flag)yx=addyx(yx,1);elseyx=addyx(yx,-1);}if(isly && month>=1 && month<=2){//闰年1~2月年系数累加1,3`12月年系数累加2if(!flag)yx=addyx(yx,1);elseyx=addyx(yx,-2);}else if(isly && month>=3 && month<=12){if(!flag)yx=addyx(yx,2);elseyx=addyx(yx,-1);}if(nyear==year)break;if(!flag && nyear<year)nyear++;if(flag && nyear>year)nyear--;}return yx;}int addyx(int yx,int n)//年系数自增,0~6,n:自增的跨度,返回自增后的年系数{if(n>0){if(yx+n<=6)return yx+n;if(yx+n>6)return yx+n-7;}if(n<0){if(yx+n>=0)return yx+n;if(yx+n<0)return yx+n+7;}return -1;}int isLeapYear(int year)//判断是否是闰年,是返回1,否返回0{if((year%4==0 && year%100!=0)||(year%400==0))return 1;return 0;}
怎么用C语言编写万年历程序
万年历
#include "stdio.h" /* Required for MS-DOS use */
#define ENTER 0x1C0D /* Enter key */
int year, month, day;
static char *days[8] = {" ","Sunday ","Monday ","Tuesday ",
"Wednesday","Thursday ","Friday ","Saturday "};
struct TIMEDATE {
int year; /* year 1980..2099 */
int month; /* month 1=Jan 2=Feb, etc. */
int day; /* day of month 0..31 */
int hours; /* hour 0..23 */
int minutes; /* minute 0..59 */
int seconds; /* second 0..59 */
int hsecs; /* 1/100ths of second 0..99 */
char dateline[47]; /* date & time together */
};
static struct TIMEDATE today;
main()
{
char cmonth[3];
char cday[3];
char cyear[5];
double getdays();
double daynumb, numbnow;
int weekday, retcode, dayer, i;
dayer = datetime(&today);
clrscn();
for (i=0;i<3;++i)cmonth[i]='\0';
for (i=0;i<3;++i)cday[i]='\0';
for (i=0;i<5;++i)cyear[i]='\0';
putstr(5,8,14,"Enter date in MM DD YYYY format:");
while (retcode != ENTER)
{
retcode = bufinp(5,41,13,2,cmonth);
if (retcode != ENTER) retcode = bufinp(5,44,13,2,cday);
if (retcode != ENTER) retcode = bufinp(5,47,13,4,cyear);
}
year = atoi(&cyear);
month = atoi(&cmonth);
day = atoi(&cday);
daynumb = getdays(year, month, day);
numbnow = getdays(today.year, today.month, today.day);
weekday = weekdays(daynumb);
if (numbnow - daynumb == 0)
printf("\n\n%02d-%02d-%d is",month, day, year);
if (numbnow - daynumb > 0)
printf("\n\n%02d-%02d-%d was",month, day, year);
if (numbnow - daynumb < 0)
printf("\n\n%02d-%02d-%d will be",month, day, year);
printf(" a %s\n",days[weekday]);
} /* end MAIN */
/************************************************************
* GETDAYS - From integer values of year (YYYY), month *
* (MM) and day (DD) this subroutine returns a *
* double float number which represents the *
* number of days since Jan 1, 1980 (day 1). *
* This routine is the opposite of GETDATE. *
************************************************************/
double getdays(year, month, day)
int year, month, day;
{
int y,m;
double a,b,d, daynumb;
double floor(),intg();
/**********************************
** make correction for no year 0 **
**********************************/
if (year < 0) y = year + 1;
else y = year;
/*********************************************************
** Jan and Feb are months 13 and 14 in this calculation **
*********************************************************/
m = month;
if (month < 3)
{
m = m + 12;
y = y - 1;
}
/**************************
** calculate Julian days **
**************************/
d = floor(365.25 * y) + intg(30.6001 * (m + 1)) + day - 723244.0;
/**********************************************
** use Julian calendar if before Oct 5, 1582 **
**********************************************/
if (d < -145068.0) daynumb = d;
/*************************************
** otherwise use Gregorian calendar **
*************************************/
else
{
a = floor(y / 100.0);
b = 2 - a + floor(a / 4.0);
daynumb = d + b;
}
return(daynumb);
} /* end GETDAYS */
/********************************************************
* GETDATE - This routine takes a double float number *
* representing the number of days since Jan 1,*
* 1980 (day 1) and returns the year month and *
* day as pointer integers *
* This routine is the opposite of GETDAYS *
********************************************************/
getdate(numb)
double numb;
{
double a,aa,b,c,d,e,z;
double date;
date = numb;
z = intg(date + 2444239.0);
if (date < -145078.0) a = z;
else
{
aa = floor((z - 1867216.25) / 36524.25);
a = z + 1 + aa - floor(aa/4.0);
}
b = a + 1524.0;
c = intg((b - 122.1) / 365.25);
d = intg(365.25 * c);
e = intg((b - d) / 30.6001);
day = b - d - intg(30.6001 * e);
if (e > 13.5) month = e - 13.0;
else month = e - 1.0;
if (month > 2) year = c - 4716.0;
else year = c - 4715.0;
if (year < 1) --year;
return;
} /* end GETDATE */
/********************************************************
* WEEKDAYS - This routine takes a double float number *
* representing the number of days since Jan 1,*
* 1980 (day 1) and returns the day of the week*
* where 1 = Sunday, 2 = Tuesday, etc. *
********************************************************/
int weekdays(numb)
double numb;
{
double dd;
int day;
dd = numb;
while (dd > 28000.0) dd = dd - 28000.0;
while (dd < 0) dd = dd + 28000.0;
day = dd;
day = ((day + 1) % 7) + 1;
return(day);
}
/********************************************************
* FRACT - This routine takes a double float number *
* and returns the fractional part as a double *
* float number *
********************************************************/
double fract(numb)
double numb;
{
int inumb;
double fnumb;
while (numb < -32767) numb += 32767;
while (numb > 32767) numb -= 32767;
inumb = numb;
fnumb = inumb;
return(numb-fnumb);
} /* end FRACT */
/********************************************************
* FLOOR - This routine takes a double float number *
* and returns the next smallest integer *
********************************************************/
double floor(numb)
double numb;
{
double fract(), intg();
double out;
out = intg(numb);
if (numb < 0 && fract(numb) != 0) out -= 1.0;
return(out);
} /* end FLOOR */
/********************************************************
* INTG - This routine takes a double float number *
* and returns the integer part as a double *
* float number *
********************************************************/
double intg(numb)
double numb;
{
double fract();
return(numb - fract(numb));
} /* end INTG */
C语言程序设计 万年历查询程序。
实验名称:万年历的查询及打印
【内容】:设计一个查询并打印万年历的程序。
【步骤】:
1. 画出程序流程图;
2. 编写程序;
3. 调试程序,对调试过程中出现的问题进行分析,找出错误的原因并予改正;
4. 写出通过调试并修改正确的原程序。
【要求】:
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,结束程序运行,否则重新显示主菜单。
【提示】:
1. 闰年计算:满足下列二者之一,是闰年:
能被4整除,但不能被100整除;
能被4整除,且能被400整除。
2.闰年的二月是29天,平年的二月是28天
3.星期几的计算:
S=X-1+(X-1)/4+(X-1)/100+(X-1)/400+C
X是年份,C是该年从元旦开始到到这一日的天数。
S/7的余数既是星期数
例1:1982年12月26日
由于1982年不是闰年(不能被4整除),所以该年的二月是28天。
C=31+28+31+30+31+30+31+31+30+31+30+26=360
(1月到11月的天数+12月的实际天数)
S=1982-1+(1982-1)/4+(1982-1)/100+(1982-1)/400+360=2821.3925
S/7=2821/7=403 余数为0,所以该日是星期天。
例2:2000年3月8日
由于2000年是闰年(能被4整除,又能被100和400整除),所以该年的二月是29天。
C=31+29+8=68 (1月到2月的天数+3月的实际天数)
S=2000-1+(2000-1)/4+(2000-1)/100+(2000-1)/400+68=2551.757
S/7=2551/7=364 余数为3,所以该日是星期三。