问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言..编程

发布网友 发布时间:2022-04-29 20:15

我来回答

2个回答

热心网友 时间:2022-06-22 08:01

闰年
闰年: 1.为了弥补人为的年份规定与地球实际绕日公转的时间差,2.而人为把时间差补上了的年份,该年即为闰年.

遵循的规律为: 四年一闰,百年不润,四百年再润.

if((year % 400 == 0)|(year % 4 == 0)&(year % 100 != 0))//闰年的计算方法

详情如下:

闰年(leap year),在公历(格里历)或夏历中有闰日的年份,以及在中国旧历农历中有闰月的年份。地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year)。公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,于第四年加于2月,使当年的历年长度为366日,这一年就为闰年。现行公历中每400年有97个闰年。夏历的平年只有354日,比12个朔望月短0.3671日,为使每月初一与月朔相合,规定每30年中有11年的年底增加1日,这一年的历年有355日,即为闰年。中国旧历农历作为阴阳历的一种,每月的天数依照月亏而定,一年的时间以12个月为基准,平年比一回归年少约11天。为了合上地球围绕太阳运行周期即回归年,每隔2到4年,增加一个月,增加的这个月为闰月。在加有闰月的那一年有13个月,历年长度为384或385日,这一年也称为闰年。
按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来,因此,每四百年中要减少三个闰年。所以规定,公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的就是平年。

也就是我们通常所说的:
四年一闰,百年不闰,四百年再闰。

西方公历的“闰年”
阳历中有闰日的年份叫闰年,相反就是平年,平年为365天,闰年为366天。在公历(格里历)纪年中,平年的二月为28天,闰年的二月为29天。闰年平月2月29日为闰日。

增加闰日的原因
现时的公历以回归年为“年”的计算基础,而一个回归年大约等于365.24220日。因为在平年公历只计算365日,结果四年后便会累积0.24220×4=0.9688日,大约等于一日,所以便逢四年增加一日闰日以抵销这0.9688日。

计算闰年的方法
公历纪年法中,能被4整除的大多是闰年,不能被100整除而能被400整除的年份是闰年,能被3200整除的也不是闰年,如1900年是平年,2000年是闰年,3200年不是闰年。

中国农历的“闰年”
中国旧历农历纪年中,有闰月的一年称为闰年。一般年份为12个月,354或355天,闰年则为13个月,383或384天

编程中公历闰年的简单计算方法:
设年份 year
if (year能被4整除 and 不能被100整除) or year能被400整除
then 该年为闰年
else 该年为平年
具体程序代码:
#主模块:
;月历打印
;主程序设置好入口参数,BX=年份,DL=月份
;调用子程序 display
;By wangrui
;2006-12-8

extrn display:far

Esccode equ 01h
Up equ 048h
Down equ 050h
Left equ 04bh
Right equ 04dh

dseg segment
Year dw 0
Month db 0
temp db 10 p(0)
count dw ?
ErrMsg db 0dh,0ah,"The input NOT decimal! $"
dseg ends

cseg segment
assume cs:cseg,ds:dseg
start:
mov ax,dseg
mov ds,ax

call GetYearMonth

Ws:
mov bx,Year
mov dl,Month
call far ptr display
again:
mov ah,0
int 16h
cmp ah,Esccode
je Exit
cmp ah,Up
je NextY
cmp ah,Down
je PreY
cmp ah,Left
je PreM
cmp ah,Right
je NextM
jmp again

NextY:
inc Year
jmp Ws
PreY:
dec Year
jmp Ws
NextM:
inc Month
cmp Month,12
jbe skip0
mov Month,1
inc Year
skip0:
jmp Ws
PreM:
dec Month
cmp Month,1
jae skip1
mov Month,12
dec Year
skip1:
jmp Ws

Exit:
mov ah,4ch
int 21h

;**************************************************

GetYearMonth proc near
push ax
push cx
push si
push di

inputagain:
mov Year,0
mov Month,0

mov si,0
repeatY:
mov ah,1
int 21h
cmp al,0dh
je EndY
cmp al,20h
je EndY
cmp al,1bh
je ExitDos0
cmp al,30h
jb Err
cmp al,39h
ja Err
sub al,30h
mov temp[si],al
inc si
jmp repeatY

Err:
mov ah,9
lea dx,ErrMsg
int 21h
mov ah,2
mov dl,0dh
int 21h
mov dl,0ah
int 21h
jmp inputagain

EndY:
mov bx,10
mov di,si
mov si,0

NextYBit:
mov ah,0
mov al,temp[si]
mov count,di
sub count,si
dec count
mov cx,count
jcxz skipY
lopmul: mul bx
loop lopmul
skipY: add Year,ax
inc si
cmp si,di
jne NextYBit

;----------------------------------The year is put into [Year]

push dx
mov ah,2
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
jmp skiplap

ExitDos0:
jmp ExitDos

skiplap:
mov si,0
repeatM:
mov ah,1
int 21h
cmp al,0dh
je EndMon
cmp al,20h
je EndMon
cmp al,1bh
je ExitDos
cmp al,30h
jb Err
cmp al,39h
ja Err
sub al,30h
mov temp[si],al
inc si
jmp repeatM

EndMon:
mov di,si
mov si,0
mov bl,10
NextMBit:
mov al,temp[si]
mov count,di
sub count,si
dec count
mov cx,count
jcxz skipM
lpmul: mul bl
loop lpmul
skipM: add Month,al
inc si
cmp si,di
jne NextMBit

;-------------------------The Month is put into [Month]

push dx
mov ah,2
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx

pop di
pop si
pop cx
pop ax
ret
ExitDos:
mov ah,4ch
int 21h
GetYearMonth endp

cseg ends
end start

#打印模块:
;***********************************
;入口参数:bx = Year dl=Month
;***********************************

public display
data segment
Year dw ?
Month db ?
leap db ?
weekstr db " MON TUR WEN THU FRI SAT SUN",’$’
fillblank db " $"
fillblank4 db " $"
fillblank3 db " $"
c db ?
y db ?
firstday db ?
temp db ?
MonthSize db ?
data ends
cseg segment
assume cs:cseg,ds:data
display proc far
push ds

mov ax,data
mov ds,ax

mov Year,bx
mov Month,dl

mov dx,0
xor bh,bh
mov ah,2
int 10h

mov ah,6
mov al,0
mov bh,01110000b
mov ch,0
mov cl,0
mov dh,24
mov dl,79
int 10h

mov ah,6
mov al,0
mov bh,01110100b
mov ch,0
mov cl,25
mov dh,24
mov dl,79
int 10h

call far ptr dispYM

lea dx,weekstr
mov ah,9
int 21h
mov ah,2
mov dl,0dh
int 21h
mov dl,0ah
int 21h

call GetMonthSize ;把当前月份的天数放到MonthSize

cmp Month,2
ja skip
add Month,12
dec Year
skip:
mov bl,100
mov ax,Year
div bl
mov c,al
mov y,ah
mov cl,2
mov bl,c
shr bl,cl ;int(c/4)
shl c,1 ;2*c
sub bl,c
add bl,y
shr y,cl ;int(y/4)
add bl,y ;int(c/4)-2*c+y+int(y/4)--->bl
inc Month
xor ah,ah
mov al,Month
mov dx,13
mul dx
mov cx,5
div cx
xchg ax,bx
cbw
xchg ax,bx
add bx,ax ;int(c/4)-2*c+y+int(y/4)+int(13*(m+1)/5)
mov ax,bx
mov cl,7
idiv cl
cmp ah,0
jG skipAdd
add ah,7
skipAdd:
mov bl,ah
mov firstday,bl

;--------------------------------计算出当前月份的第一天是星期几

mov cl,bl
mov ch,0
dec cl
jcxz skipF
FillB: mov ah,9
lea dx,fillblank
int 21h
loop FillB
skipF:
mov cl,1
disLop: call dispWeek ;日期已经放入cl
inc cl
inc bl
cmp bl,8
jb skipModle
mov bl,1
mov ah,2
mov dl,0dh
int 21h
mov dl,0ah
int 21h

skipModle:
cmp cl,MonthSize
jbe dislop

mov ah,2
mov dl,0dh
int 21h
mov dl,0ah
int 21h

pop ds
ret
display endp

;******************************************************************

GetMonthSize proc near
push ax
push dx

mov leap,0
mov ax,Year
mov ch,00000011b
and ch,al
mov bl,100
div bl
mov cl,ah
cmp ch,0
jne skipNLeap
cmp cl,0
jne skipLeap

mov ax,Year
mov bx,400
mov dx,0
div bx
cmp dl,0
je skipLeap
skipNLeap:
jmp gmsize
skipLeap:
inc leap
gmsize:
mov al,Month
cmp al,2
je return2
cmp al,8
jb skipInc
inc al
skipInc:
test al,1
jz returnEven
mov MonthSize,31
jmp return
returnEven:
mov MonthSize,30
jmp return

return2:
mov MonthSize,28
cmp leap,0
je return
inc MonthSize
return:
pop dx
pop bx
ret
GetMonthSize endp

;*****************************************************************

dispWeek proc near
push cx
push bx
push ax
push dx

cmp cl,10
jae DoubleDig

lea dx,fillblank4
mov ah,9
int 21h
mov dl,cl
add dl,30h
mov ah,2
int 21h
jmp back

DoubleDig:
mov ch,10
mov ah,0
mov al,cl
div ch

mov cx,ax
mov ah,9
lea dx,fillblank3
int 21h
mov dl,cl
add dl,30h
mov ah,2
int 21h
mov dl,ch
add dl,30h
int 21h
back:
pop dx
pop ax
pop bx
pop cx
ret
dispWeek endp
;*********************************************************

dispYM proc far
push bx
push dx

mov ax,year
mov dh,10
xor si,si
next: div dh
mov cl,ah
mov ch,0
inc si
push cx
mov ah,0
cmp ax,0
jne next

mov cx,si
repeat: pop dx
mov ah,2
add dl,30h
int 21h
loop repeat

mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h

mov al,Month
mov ah,0
mov bl,10
div bl
mov cx,ax
mov dl,cl
mov ah,2
add dl,30h
int 21h
mov dl,ch
add dl,30h
int 21h

mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h

pop dx
pop bx
ret
dispYM endp
;****************************************************
cseg ends
end

参考资料:buxiaode

热心网友 时间:2022-06-22 08:01

#include <stdio.h>
void main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)/*先计算某月以前月份的总天数*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day; /*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("It is the %dth day.",sum);}
c语言高级编程是什么意思

C语言高级编程是一种C语言的进阶学习方式,它主要适用于那些已经掌握了基本C语言知识并想深入了解底层实现原理的开发人员。在C语言高级编程中,我们可以学习到更深层次的实现方式,比如多线程、网络编程、内存管理等。同时,C语言高级编程也涉及到了大量的底层算法和数据结构设计,可以帮助我们更好地理解计算...

c语言是什么

C语言是一种计算机编程语言。C语言是一种通用的、过程式的计算机程序设计语言。它支持结构化编程,拥有丰富的运算符和用户定义的函数,可以用于开发各种类型的应用程序。C语言的主要特点包括:1. 基础编程语言 C语言被当作一种基础编程语言,它提供了对计算机硬件的直接操作。这使得它对于开发底层系统组件,...

编程和C语言的区别

c语言是编程的一种,编程语言有很多 C、C++、JAVA、python等等,C语言是最基础的语言之一,其他的语言如C++、JAVA等语言都是基于C语言修修剪剪而来,核心的编程意识,和编程基本的语句是一致的。如循环、数组、函数、等等。所以说学会了C语言,学习其他语言就会相对容易的多。

c语言在哪个软件里编程?

1、打开Microsoft Visual Studio 2010软件;然后打开“新建”,选择“项目”。2、选择“win32控制台应用程序”,在窗口下面的名称填写好名称。3、点击“下一步”。4、在附加选项中选择“空项目”,然后点击“完成”。5、在软件界面左边的“解决方案资源管理器”中的“源文件”上面右击鼠标一次选择“添加...

学编程到底是学C语言、C++、VB、jave中的哪种比较好?

问题一:编程语言学哪个好 简单点说就是两条路: 一、C\C++\C#(ASP.NET) 二、JAVA(J2SE\J2EE\J2ME\JSP) 走这两条路都必学的:数据结构、数据库(SQL或Oracle) 选学:计算机应用基础、网络基础、硬件基础。C是学习高级语言的基础;C++主要用于编写大型软件核心代码和汇编一样,比较难学,不过学好了后,很有前途;...

学生C语言编程学习必备的一些网站

C语言网(www.dotcpp.com)不仅提供C语言,还包括C++、java、算法与数据结构等课程在内的各种入门教程、视频录像、编程经验、编译器教程及软件下载、题解博客,源码分享等优质资源,提倡边学边练边分享,同时提供对口的IT工作,是国内领先实用的综合性编程学习网站! 2、C语言中文网 C语言中文网是中国领先的C语言程序设计...

三大编程语言

编程语言 目前比较火的编程语言:Python、Java、C语言等 C语言,你可以先学习C语言,然后再学习C++。C语言是很多高级编程语言的基础。学好C语言,让你更容易理解计算机底层的一些课程,未来学习其他语言变得简单。Python,相对于其他编程语言是比较简单的。Python语言简洁清爽,开发效率很高。十分接近自然的语言...

关于C语言和编程

1、c语言和编程有什么关系?编程就是用一种编程语言实现某些功能需求, 而c语言只是其中的一门编程语言,也就是说同 样的问题,我们可以用不同的语言来实现它,比如汇编语言c、c++、c#、java、php等很多,但是每一种语言都有它的强势所在,都有它的应用领域!2、c语言怎么学?有著名的新手教材没?...

c语言和c#,c++三者的区别是什么?

1. C语言 C语言是计算机编程的基础语言之一,它提供对计算机硬件的直接操作,具有过程化编程的特性。它以算法和流程控制为核心,注重于代码的执行效率和性能优化。C语言广泛应用于系统开发、嵌入式系统、操作系统等领域。2. C++ C++是C语言的扩展,增加了面向对象的编程特性,如类、封装和多态等。它继承...

C语言编程...

include &lt;stdio.h&gt; int main(){ char a[100];/*定义数组*/ int i;gets(a );/*从键盘输入一行字符*/ for (i = 0;a[i];++i );/*遍历数组统计长度,a[i]为0时达到字符串尾*/ printf("len is:d\n",i );/*这时的i里就包含了字符串的长度*/ } ...

C语言编程 C语言编程用什么软件 c语言编程步骤 c语言编程题 c语言入门编程软件 编程语言有哪些 写c语言的编程软件 c++语言编程软件 杨辉三角c语言编程
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2024年小麦价格多少钱一斤 酸甜口味的凉拌菜如何制作? 小麦价格什么时候涨 明年小麦还会继续上涨吗 怎么做家常韭菜烧豆腐? 家常烧豆腐块怎么做? 单核CPU512内存 加内存会让电脑运行快吗 我的电脑配置 CPU AMD速龙 双核 3600+ 内存 512MB 显卡64M 什么情况... 我的cpu是AMD Sempron 3000+的 内存是512M 显示卡是 Radeon X300/X550/... 我的电脑是双核CPU 2G内存 512独显 怎样才能加快电脑运行速度 为什么电影天堂里的迅雷我明明下载了 它还要让我下? 掠食·Prey汉化补丁下载给个高速下载的吧! 京东E卡可以购买加油充值卡吗? 电影天堂里的电影链接用迅雷下载变成.html格式,怎么办? 电影天堂迅雷下载 Prey 是电影名么?中文译名?故事梗概? PREY这游戏吧 挺好玩,但总觉得缺了点儿啥 用电影天堂 迅雷下得 为什么下不了 prey 掠食 进去屏幕就是黑的,是我的配置太低了还是什么? 在电影天堂下电影用迅雷几来着?? 问一下steam的prey为什么设置简体中文进去后还是英文怎么办 为什么我在电影天堂下载点击右键没有迅雷下载呢?只有搜狗下载 epic游戏中文命令参数 怎样在电影天堂里下载电影?如果是下到迅雷里,怎么下?不用迅雷呢? 电影天堂里用迅雷下载不能同时下载几个了,一次只能下一个? PHP+MYSQL的数据库如何备份和还原? 手腕17cm,带42mm的手表显得大不大 手腕周长14.6厘米合适带46毫米表盘的moto360二代吗 46毫米表盘适合多大手腕 手表47mm会不会太大 三角洲部队7中文版怎么玩 不是投保人要求退保配偶说的话有用没 请高人帮忙翻译下!! 投保人不是本人签字可以退保吗 保单非投保人签名能全额退保吗 给中石化加油卡充值能用京东白条吗? 京东白条这几天怎么不能给中石化加油卡充值了,什么原因有知道的吗 联系不到投保人,被保险人要求退保怎么半? 车险买了几天投保人和被保险人不是自己可以投诉退保吗 车险不是投保人能退保吗 顺丰同城大网落地配有车吗 只有投保人才能退保吗 被保险人跟投保人不是同一个人,投保人可以自己去退保险吗? 人寿保险可以未经投保人同意就配合法院强制办理退保? 顺丰兼职骑手保证金300才能接单- 问一问 骑手顺丰同城急送要带收货款怎么弄? 贵阳顺丰同城急送员工资 顺丰同城急送骑手电话是多少,怎么加入,有干跑腿的吗一个月能挣多少钱? 相机黑屏怎么回事? 寒山寺刻写枫桥夜泊的大石碑资料