導航:首頁 > 源碼編譯 > 如何編譯年月日

如何編譯年月日

發布時間:2022-10-05 11:13:36

㈠ c++中如何聲明一個時間的結構體,可以精確表示年,月,日,時,分,秒。提示用戶輸入時間,並完整表示出來

在Win32程序匯編中默認就有SYSTEMTIME類數據結構,也就是時間的結構體

下面是編譯器自動生成的SYSTEMTIME結構體代碼:
SYSTEMTIME STRUCT
{
WORD wYear ; 年
WORD wMonth ;月
WORD wDayOfWeek ;星期,0=星期日,1=星期一...
WORD wDay ;日
WORD wHour ;時
WORD wMinute ;分
WORD wSecond ;秒
WORD wMilliseconds ;毫秒
}SYSTEMTIME ENDS

結構中的欄位全為word類型,而Win32程序中用的往往是dword型變數,所以在使用這些數據之前往往要先把它們轉換為dword類型,用movzx指令就可以實現。
與獲取系統時間的函數相對應,可以用下面的兩個函數設置系統時間:
invoke SetLocalTime,lpSystemTime;獲取本地時間
invoke SetSystemTime,lpSystemTime;獲取格林威治標准時間

你可以照著這個寫,定義好結構體後讓用戶輸入並保存起來
至於那個WORD,自己寫程序你完全可以把改成熟悉的int

㈡ 給定年月日 怎樣用C語言編程計算2個日期之間的時間天數

問題不難。
思路如下:
1. 要判斷時間的合法性(如果不想判斷也可以)
參考資料:(使用的是C++,修改之後TC下也可運行,主要是看思路)
http://hi..com/ctralt/blog/item/ee937c167e87db4b21a4e96b.html

2. 判斷兩個日期之間的天數
判斷輸入的年份是不是閏年;年份是否相同;月份是否相同;日是否相同?
同年同月最好計算,日數相減就出來了;同年不同月也好計算,計算中間相隔幾個月,轉換成天數,小的日期距月底有多少天,大的日期距月初多少天,三個數相加;關鍵是不同年的日期計算:先計算中間相隔幾年,這幾年的天數就出來了,再計算小的日期到年底有多少天,其次計算大的日期距年初有多少天,三個數相加就可以了。
參考資料:(也是用C++編寫的,你可以把類修改為結構體,一樣可以使用)
http://..com/question/55367386

以下為計算兩個日期之間天數的代碼:
/* 返回絕對值 */
int abs(int a,int b)
{
if(a>=b)
return (a-b);
else
return (b-a);
}

/* 判斷是否為閏年:是,返回 1 ; 不是, 返回 0 . */
int IsLeap(int year)
{
if(((year%4==0)&&(year%100!=0))||year%400==0)
return 1;
else
return 0;
}

/* 判斷某個日期從年初(y年1月1日)到該天(y年m月d日)的天數 */
int Days(int y,int m,int d)
{
int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i;
int sum = 0 ; /* 計算天數 */
if(IsLeap(y)) /* 如果為閏年,2月有 29 天 */
days[2] = 29 ;
for(i=0;i<m;i++)
sum = sum +days[i] ;
sum = sum + d - 1 ;
return sum;
}

/*
判斷兩個日期之間的天數.
日期一:年 y1,月 m1,日 d1;
日期一:年 y2,月 m2,日 d2;
*/
int DiffDays(int y1,int m1,int d1,int y2,int m2,int d2)
{
int s1,s2; /* 計算兩個日期從年初到該日期的天數 */
int count; /* 計算兩個年份之間的差值 */
int sum=0; /* */
int t,t1,t2;
if(y1==y2)
{
s1 = Days(y1,m1,d1);
s2 = Days(y2,m2,d2);
return abs(s1,s2);
}
else if(y1>y2)
{
count = y1 - y2 ;
if(count == 1)
{
t1 = Days(y1,m1,d1);
t2 = Days(y2,12,31) - Days(y2,m2,d2);
return (t1+t2+count);
}
else
{
for(t = y2+1;t<y1;t++)
sum = sum + Days(t,12,31);
cout<<sum<<endl;
t2 = Days(y2,12,31) - Days(y2,m2,d2);
t1 = Days(y1,m1,d1);
return (sum+t1+t2+count);
}

}
else
{
count = y2 - y1 ;
if(count == 1)
{
t2 = Days(y2,m2,d2);
t1 = Days(y1,12,31) - Days(y1,m1,d1);
return (t1+t2+count);
}
else
{
for(t = y1+1;t<y2;t++)
sum = sum + Days(t,12,31);
t2 = Days(y2,m2,d2);
t1 = Days(y1,12,31) - Days(y1,m1,d1);
return (sum+t1+t2+count);
}

}

}

/*
以上代碼在Viusal C++ 6.0 編譯下通過,TC下也可以通過。
使用DiffDays(int,int,int,int,int,int)這個函數就可計算出兩個日期之間的天數.
至於日期的合法性,沒有進行判斷;也就是說,你如果輸入一個不合法的日期,計算出來的結果是不正確的;如果是合法日期,那就沒問題。
*/

㈢ c語言年月日計算

首先,你的閏年判斷就有問題。教你個口訣:「四年一潤,一百年不潤,四百年再潤」。

其實就可以用if(yr%4==0||yr%100!=0&&yr%400==0){那麼是閏年}

你的檢驗判斷也可以利用mont數組的,首先判斷是不是在閏年,然後判斷輸入days是不是大於的mont[mn](如果是閏年要判斷二月+1)。

㈣ C++編程:定義一個結構體變數(包括年月日),編寫程序,要求輸入年、月、日,程序能計算並輸出該日在本年中

#include <iostream>
using namespace std;
struct Date
{
int year;
int month;
int day;
};

int main()
{
Date date;
int count_day,i;
int month_day[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
bool leap;
cout<<"輸入年:";
cin>>date.year;
cout<<"輸入月";
cin>>date.month;
cout<<"輸入日";
cin>>date.day;
count_day=date.day;
if ((date.year%4==0 && date.year%100!=0) || (date.year%400==0))
{
leap=true;
}
else
{
leap=false;
month_day[2]=28;
}
for(i=0;i<date.month;i++)
count_day=count_day+month_day[i];
cout<<"該日是本年第"<<count_day<<"天"<<endl;
return 0;
}
調試成功請查收。採納。兄弟 多給點分,寫程序的不容易呀

㈤ 編寫一個c語言程序,輸入一個年月日,輸出這個日期是這一年的第幾天。(考慮閏年)

#include <stdio.h>

void main()

{

int year=0,month=0,day=0,i=0,sum=0;

while(1)

{

printf("請輸入年份:");

scanf("%d",&year);

printf("請輸入月份:");

scanf("%d",&month);

printf("請輸入日期:");

scanf("%d",&day);

i=0;//i變數是為了控制月和日的格式是否輸入正確;

switch(month)//判斷每個月的日期是否輸入正確;

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

if(day>0&&day<=31)

{

i=1;

}

break;

case 4:

case 6:

case 9:

case 11:

if(day>0&&day<=30)

{

i=1;

}

break;

case 2://2月閏年可以輸入29日;

if((year%4==0&&year%100!=0)||year%400==0)

{

if(day>0&&day<=29)

{

i=1;

}

}

else

{

if(day>0&&day<=28)

{

i=1;

}

}

break;

default://如果輸入不是1-12月份,那麼月份輸入有誤;

i=0;

break;

}

if(i)//如果i變數為1,那麼輸入正確,否則重新輸入;

{

break;

}

else

{

printf("請輸入正確的年月日!!! ");

}

}

i=0;

switch(month)//把每個月的日期累加;

{

case 12:

i=i+30;

case 11:

i=i+31;

case 10:

i=i+30;

case 9:

i=i+31;

case 8:

i=i+31;

case 7:

i=i+30;

case 6:

i=i+31;

case 5:

i=i+30;

case 4:

i=i+31;

case 3:

if((year%4==0&&year%100!=0)||year%400==0)

{

i=i+29;

}

else

{

i=i+28;

}

case 2:

i=i+31;

case 1:

;

}

sum=i+day;

printf("%d年%d月%d日是%d年的第%d天 !",year,month,day,year,sum);

}

拓展資料

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。



java中如何設置Date對象的年月日

Date
public Date(int year,
int month,
int day)
參數:
year - year 減去 1900,它必須是 0 到 8099 之間的數。(注意,8099 是由 9999 減去 1900 得到的。)
month - 0 到 11 之間的數
day - 1 到 31 之間的數

測試代碼如下:
import java.util.Date;

public class Test {
public static void main(String args[]){
Date date = new Date(2010-1900,1,10);
System.out.println(date);
}
}

運行結果:
Wed Feb 10 00:00:00 CST 2010

希望對你有幫助。。。。。。仍有問題可以HI我。。。。

㈦ 匯編程序 輸入月日年,輸出年月日

; 題目名稱:回顯輸入的日期
; 題目來源:http://..com/question/130414773.html
; 操作說明:
; 1、由於年份限定2位數,所以,本程序認為:輸入的年份為二十一世紀
; 2、月、日、年均為兩位數字,輸足兩位,自動進入下一環節;不足兩位,須按回車健認定
; 本程序在MASMPlus 1.2集成環境下通過編譯,經過調試,運行正確。
Code Segment
Assume CS:Code,DS:Code
; -------------------------------------
; 功能:顯示指定地址(Str_Addr)的字元串
; 入口:
; Str_Addr=字元串地址(要求在數據段)
; 用法: Output Str_Addr
; 用法舉例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -------------------------------------
; 功能:輸出一個字元
; 入口:dl=要顯示的字元
Output_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Output_Chr endp
; -------------------------------------
; 功能:取游標位置
; 入口:無
; 出口:DH=行號,DL=列號
GetCursor Proc Near
PUSH DS
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH CS
POP DS
XOR BX,BX
MOV AH,3
INT 10H
MOV Cursor_Row,DH
MOV Cursor_Col,DL
POP DX
POP CX
POP BX
POP AX
POP DS
RET
Cursor_Row DB ?
Cursor_Col DB ?
GetCursor EndP
; -------------------------------------
; 功能:置游標位置
; 入口:Cursor_Row=行坐標; Cursor_Col: 列坐標)
SetCursor Proc Near
PUSH DS
PUSH DX
PUSH CX
PUSH BX
PUSH AX
PUSH CS
POP DS
MOV DH,Cursor_Row
MOV DL,Cursor_Col
XOR BX,BX
MOV AH,2
INT 10H
POP AX
POP BX
POP CX
POP DX
POP DS
RET
SetCursor EndP
; -------------------------------------
; 功能:鍵盤輸入一個指定位數(N)的十進制數字,將其轉換成二進制數並保存在指定的內存單元。
; 輸足N位的,自動結束輸入;不足N位的,空格結束輸入。
; 由於限定最大數據類型為字,所以,數字位數最多:5,最大無符號數:65536
; 約定:直接回車,視為數字0
; 入口:cs:@@Digits=數字位數;es:di=保存輸入的數字首地址
; cs:@@Type_Data=保存的數據類型,B=位元組類型,W=字類型。
; 出口:轉換後的二進制數保存在di所指的單元
Input_Dec Proc Near
CR equ 0DH
LF equ 0AH
KBBack equ 08H
push ds
push dx
push cx
push bx
push di
push cs
pop ds
call GetCursor ;取游標位置
mov dx,WORD PTR Cursor_Row
mov @@Tmp_Cursor,dx ;保存起始游標位置
lea di,@@Save_Tmp
push di
cld
mov cl,@@Digits
xor ch,ch
push cx
@@Input_Dec: call GetCursor ;取游標位置
mov ah,1 ;從鍵盤接受一個字元
int 21h
cmp al,CR ;若鍵入的是空格,已經鍵入的數字不足N位
jz @@ASC_Dec ;轉去處理已經鍵入的數字
cmp al,KBBack
jz @@KB_Back ;若是回空鍵,重新輸入
cmp al,'0'
jb @@KBBack ;若低於數字'0',重新輸入
cmp al,'9'
ja @@KBBack ;若高於數字'9',重新輸入
jmp @@Save_Dig
@@KB_Back: cmp cl,cs:@@Digits ;十進制數字位數
jz @@Input_Dec
inc cx
dec di
dec Cursor_Col
@@KBBack: call SetCursor ;置游標位置
jmp @@Input_Dec
@@Save_Dig: and al,0fh ;轉換成二進制數
stosb ;保存
loop @@Input_Dec ;接受下一個數字
@@ASC_Dec: mov ax,cx
pop cx
pop si
sub cx,ax ;實際輸入的數字位數
xor bp,bp
xor dx,dx
xor ax,ax
jcxz @@Save_Ret ;若直接空格,沒有輸入任何數字,按輸入'0'處理
dec cx ;實際輸入的數字位數減1,准備把輸入的這一串數字轉換成二進制數
jcxz @@One_Digit ;若輸入的數字只有一位,轉去直接保存這個二進制數
mov bx,10
@@Mul_Ten: lodsb
xor ah,ah
add ax,bp
mul bx
mov bp,ax
loop @@Mul_Ten
@@One_Digit: lodsb
xor ah,ah
add ax,bp
@@Save_Ret: pop di
cmp @@Type_Data,'B' ;位元組類型?
jz $+5
stosw
jmp $+3
stosb
pop bx
pop cx
pop dx
pop ds
ret
@@Tmp_Cursor dw ? ;起始游標位置
@@Digits db ? ;十進制數字位數
@@Type_Data db 'B' ;保存的數據類型。B=位元組類型,W=字類型
@@Save_Tmp db 7 p(?)
Input_Dec EndP
; -------------------------------------
; 功能:把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,並送顯示屏顯示
; 入口:AX=二進制數
; 出口:在當前游標位置顯示轉換後的ASCII碼數字
Unsi_Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[5]
mov BYTE PTR [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 6 p(?)
Unsi_Dec_ASCII EndP
; -------------------------------------
; 功能:判斷指定年份是否閏年,修改2月份天數
; 入口參數:AX=年份值
; 出口參數:DL=2月份天數
Leap_Year Proc Near
push dx
push bx
mov dx,ax
mov bx,100 ;用於判斷年份是否是整世紀年份
div bl
mov bx,4
test ah,ah ;看能否被100整除
jz @@Century ;能被100整除,說明是世紀年份,轉去看能否被4整除
mov ax,dx
xor dx,dx
div bx ;除以4
test dx,dx ;能整除?
jz @@Leap_Year ;能,閏年
@@Not_Leap: mov Dates_Table[1],28 ;非閏年,2月份28天
pop bx
pop dx
ret
@@Century: div bl ;除以4
test ah,ah ;看能否被4整除
jnz @@Not_Leap ;非閏年
@@Leap_Year: mov Dates_Table[1],29 ;閏年,2月份29天
pop bx
pop dx
ret
Leap_Year EndP
; -------------------------------------
Dates_Table db 31,28,31,30,31,30,31,31,30,31,30,31 ;月份天數表
Prompt_Date1 db 'what is the date(MM/DD/YY)? / / $'
Prompt_Date2 db 7,13,10,13,10,'The date is $'
Prompt_Error1 db 7,13,10,'Error month!',13,10,13,10,'$'
Prompt_Error2 db 7,13,10,'Error date!',13,10,13,10,'$'
@@Month db ? ;月份
@@Date db ? ;日
@@Year db ? ;年份
Press_Key db 7,13,10,13,10,'The complated. Press any key to exit...$'
Start: push cs
pop ds
push cs
pop es ;使數據段、附加段與代碼段同段
mov @@Digits,2 ;十進制數字位數
mov @@Type_Data,'B' ;保存的數據類型。B=位元組類型,W=字類型
Input_Date: Output Prompt_Date1 ;提示輸入:月/日/年
call GetCursor ;取當前游標位置
sub Cursor_Col,8
mov dx,WORD ptr Cursor_Row
call SetCursor ;置游標位置
lea di,@@Month ;月份
call Input_Dec ;鍵盤輸入一個指定位數(N)的十進制數字,將其轉換成二進制數並保存在指定的內存單元
add dh,3
mov WORD ptr Cursor_Row,dx
call SetCursor ;置游標位置
lea di,@@Date ;日
call Input_Dec
add dh,3
mov WORD ptr Cursor_Row,dx
call SetCursor ;置游標位置
lea di,@@Year ;年份
call Input_Dec
mov al,@@Year ;取年份數
xor ah,ah
add ax,2000 ;加上2000,假定輸入的年份默認為二十一世紀
call Leap_Year ;判斷指定年份是否閏年,修改2月份天數
mov al,@@Month ;取月份值
cmp al,1
jb Month_Error
cmp al,12
ja Month_Error
dec al
lea bx,Dates_Table ;月份天數表地址
xlat ;查表取得對應月份天數
mov ah,@@Date ;取日值
cmp ah,1
jb Date_Error
cmp ah,al
ja Date_Error
Output Prompt_Date2 ;提示輸入:年-月-日
mov al,@@Year ;取年份數
xor ah,ah
add ax,2000 ;加上2000,假定輸入的年份默認為二十一世紀
call Unsi_Dec_ASCII ;把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,並送顯示屏顯示
mov dl,'.'
call Output_Chr ;顯示一個字元
mov al,@@Month ;取月份值
xor ah,ah
call Unsi_Dec_ASCII
mov dl,'.'
call Output_Chr ;顯示一個字元
mov al,@@Date ;取日值
xor ah,ah
call Unsi_Dec_ASCII
Exit_Proc: Output Press_Key ;提示操作完成,按任意鍵結束程序
mov ah,1
int 21h
mov ah,4ch ;結束程序
int 21h
Month_Error: Output Prompt_Error1 ;提示月份錯誤
jmp Input_Date ;重新輸入
Date_Error: Output Prompt_Error2 ;提示日期錯誤
jmp Input_Date ;重新輸入
Code ENDS
END Start ;編譯到此結束

㈧ 用c語言寫一個程序,輸入年月日,把日期自動加一天,然後輸入.

這是陽歷的常識:
陽歷(即公歷),是世界上多數國家通用的歷法,由"儒略歷"修訂而成。儒略歷

是公元前46年,古羅馬統帥儒略、愷撒決定採用的歷法。
陽歷,是以地球繞太陽運動作為根據的歷法。它以地球繞太陽一周(一回歸年)為

一年。一回歸年的長度是365.2422日,也就是365天5小時48分46秒,積累4年共有23小時

15分4秒,大約等於一天,所以每4年增加1天,加在2月的末尾,得366天,就是閏年。但

是4年加1天實際回歸年多了44分56秒,積滿128年左右就又多算了一天,也就是在400年中

約多算了3天。
陽歷閏年規定:公元年數可用4整除的,就算閏年;為了要在400年減去多算的3天,

並規定公元世紀的整數,即公元年數是100的整數時,須用400來整除的才算閏年,如1600

年、2000年、2200年、2400年就是閏年。這樣就巧妙地在400年中減去了3天,陽歷規定每

年都是12個月,月份的大小完全是人為的規定,現在規定每年的1、3、5、7、8、10、12

月為大月,每月31天;4、6、9、11月為小月,每月30天;2月平年是28天,閏年是29天。

歸納上面的得出結論:
陽歷:
閏年,2月29天,平年28天。
其它月,1、3、5、7、8、10、12為大月31天。
2、4、6、9、11為小月30天。
能被400整除的是閏年;
除能被100整除的不是閏年(能被400整除的除外)其餘能被4整除的是閏年。

所以你只要計算是不是閏年,就可以識別2月份了,所以這個應該不是很難,關鍵

是閏年。
下面是我花了30分鍾寫的程序,我一直用C++,由於不知道C支不支持布爾型,所以兩個判斷的函數返回用整型。你看一下程序能不能運行。我在VC60下編譯通過。

#include "stdio.h"
int IsLeapYear(int Year);//判斷是不是閏年。
int IsCurrentDate(int Year,int Month,int Day);//是不是正確的日期。
int ReturnNextDay(int Year,int Month,int Day);//返回下一天,也有判斷是不是正確的日期。
int LeapYear_Month_SumDay[12]={31,29,31,30,31,30,31,31,30,31,30,31};//閏年數組,保存各月天數。
void main()
{
int Year=0,Month=0,Day=0,NextDay=0;
printf("pleace enter right Date(example:2005 6 27):\n");
scanf("%d%d%d",&Year,&Month,&Day);
NextDay=ReturnNextDay(Year,Month,Day);

switch (NextDay)
{
case 0: printf("not a current date\n");
break;
case 1:
if (Month==12)
{
Year++;
Month=1;
}
else
{
Month++;
}
break;
}
if (NextDay!=0) printf("The you input next date is %d-%d-%d.Thank use bye bye!\n",Year,Month,NextDay);

}

int IsLeapYear(int Year)
{
if (Year%4==0)
{
if (Year%400) return 1;
else
{
if (Year%100==0) return 0;
else return 1;
}
}
else
{
return 0;
}
}

int IsCurrentDate(int Year,int Month,int Day)
{
if ((Year<0) && (Year>9999) && (Month>12) && (Month<1) && (Day<1) &&(Day>31) )return 0;
else return 1;
}

int ReturnNextDay(int Year,int Month,int Day)
{
int ThisMonthSumDay;
if (IsCurrentDate(Year,Month,Day)==1)
{
ThisMonthSumDay=LeapYear_Month_SumDay[Month-1];
if (Month==2)
{
if (IsLeapYear(Year)==0) ThisMonthSumDay--;
}
if (Day<ThisMonthSumDay)
{
return ++Day;
}
else
{
if (Day==ThisMonthSumDay)
{
return 1;
}
else
{
return 0;
}

}
}
else
{
return 0;
}

}

㈨ c#中,如何獲取日期型欄位里的年、月、日

獲取日期型欄位中的年月日字元的具體代碼如下:

string date="2010-5-11";

DateTime dt=DateTime.Parse(date);

string yy=dt.Year.ToString();

string mm=dt.Month.ToString();

string dd=dt.Day.ToString();

上述代碼中yy為獲取得到的年份2010,mm為獲取得到的月份5,dd為獲取得到的日子1

(9)如何編譯年月日擴展閱讀

基本運算符

C使用運算符(operator)來代表算術運算。例如,+運算符可以使它兩側的值加在一起。如果您覺得術語「運算符」聽起來比較奇怪,那麼請您記住那些東西總得有個名稱。

與其被稱之為「那些東西」或「數學符號」,被稱之為「運算符」似乎看起來更專業一些。

賦值運算符

在C里,符號=不表示「相等」,而是一個賦值運算符。下面的語句是將2014賦給num的變數。
num=2014;

也就是說,符號=的左邊是一個變數名,右邊是賦給該變數的值。符號=被稱為賦值運算符(assignment operator)。再次強調不要把這行代碼讀做「num等於2014」,而應該讀為「將值2014賦給變數num」。賦值運算符的動作是從右到左。

或許變數的名字和變數值之間的區別看起來微乎其微,但是請考慮下面的常量計算機語句:
i=i+1;

在數學上,該語句沒有任何意義。如果您給一個有限的數加1,結果不會「等於」這個數本身。它意味著「找到名字為i的變數的值:然後對那個值加1,然後將這個新值賦給名字為i的變數」。

像下面的這條語句: 2014=num;

在C中是沒有意義的(確切的說是無效的),原因是2014隻是一個常量。您不能將一個值賦給一個常量;那個常量本身就是它的值了。所以,當您准備鍵入代碼時請記住在符號=左邊的項目必須是一個變數的名字。

實際上,賦值運算符左邊必須指向一個存儲位置。最簡單的方法是使用變數的名字,但是以後您會看到,「指針」也可以指向一個存儲位置。更普遍地,C使用術語「可修改的左值」(modifiable Ivalue)來標志那些我們可以為之賦值的實體。


㈩ 用C語言寫一個函數,給出年月日,計算該日是該年的第幾天

//說明:你的程序存在幾個語法錯誤,1、find(x,y,z)應改成find(int x,int y,int z)函數的定義語法;2、//int find(x,y,z);此處聲明多餘了,因為函數是在前面定義的,就無需再聲明了,而且聲明語法不對,應為find(int x,int y,int z);要加分號。3、格式控制符號用錯了,應該是沒有「,」的scanf("%d%d%d",&year,&month,&date);即在%d%d之間沒有逗號;//另外我也編了一個僅供參考,編譯成功的,在後面。
//此為我對你的代碼的改正,都做了注釋說明。
#include
int x,y,z;
int find(int x,int y,int z)//find(x,y,z)應改成find(int x,int y,int z)
{int i,t,s,days=0;
if(x%4==0)t=1;
else t=0;
for(i=1;i<y;i++)
{if(i==2)s=2-t;
else s=0;
days=days+30+i%2-s;
}
days=days+z;
return(days);
}

void main()
{//int find(x,y,z);此處聲明多餘了,因為函數是在前面定義的,就無需再聲明了
int year,month,date,day;
scanf("%d%d%d",&year,&month,&date);//格式控制符號用錯了,應該是沒有「,」的
day=find(year,month,date);
printf("THE DATE IS THE %dth DAYS\n",day);
}
//另外我也編了一個僅供參考,編譯成功的
#include
void main()
{
int year,month,day,sum;
scanf("%d%d%d",&year,&month,&day);
int p(int year);
int monday(int m);
int find(int y,int m,int d);
sum=find(year,month,day);
printf("THE DATE IS THE %dth DAYS\n",sum);
}

int p(int year){//判斷是否為閏年
int leap;
if((year%4==0&&year%100!=0)||(year%400==0)) leap=1;
else leap=0;
return leap;
}
int mon_day(int y,int m){//判斷月份的日子總數
int num;
switch (m)
{ case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:num=31;break;
case 4:
case 6:
case 9:
case 11:num=30;break;
case 2:{if (y&&(m=2)) num=29;
else num=28;
}break;
}
return num;
}

int find(int y,int m,int d){//計算日子,用遍歷的方法,因為每個月份的天數是不同的,閏年時2月天數也不同
int sum=d;
while (m>1){
m=m-1;
sum=sum+mon_day(y,m);}
return sum;
}

閱讀全文

與如何編譯年月日相關的資料

熱點內容
aqdya愛情網 瀏覽:743
韓國倫理電影正宇 瀏覽:887
男主角在劇里叫諾亞的電影 瀏覽:794
集結號的男主 瀏覽:415
魔獸世界懷舊服會長移交命令 瀏覽:100
中文字幕在線觀看的網站 瀏覽:473
主角上自己女兒的小說 瀏覽:112
javaextjs文件上傳 瀏覽:28
有哪些佛教電影 瀏覽:149
成人劇情小說 瀏覽:113
國外免費小電影網站 瀏覽:909
怎麼把文件夾百度網盤 瀏覽:788
韓國頂級愛情電影 瀏覽:489
美國電影紅 瀏覽:946
框架梁與次梁哪條梁需要加密 瀏覽:6
俄羅斯版越戰英豪電影 瀏覽:970
寶塔上的網站源碼怎麼打包 瀏覽:282
采補爐鼎小說 瀏覽:892
窗口輪廓菜單命令的快捷鍵 瀏覽:300
怎麼看安卓版本是幾位 瀏覽:641