輸入日期算天數c語言
1. c語言中輸入一個日期計算他是今年的第幾天
輸入年月日三個值,先累加該年之前各個月的每月天數,最後累加日期天數即可獲取結果。
一、演算法設計:
1、輸入年月日三個值;
2、為保證程序健壯性,可以對三個值的合法性進行判斷,只對合法數據進行操作;
3、累加之前各月天數;
4、累加當前日值;
5、輸出結果。
二、注意點:
可以使用數組存儲各個月份的天數,用循環累加。需要注意的是閏年的判斷。對於閏年,2月要多加一天。
三、參考代碼:
#include<stdio.h>
intmain()
{
intmdays[12]={31,28,31,30,31,30,31,31,30,31,30,31};//十二個月的天數。
inty,m,d,r=0,i;
scanf("%d%d%d",&y,&m,&d);
if(y%400==0||(y%4==0&&y%100!=0))//閏年。
mdays[1]=29;//設置閏年二月值。
if(y<0||m<=0||m>12||d<=0||d>mdays[m-1])//輸入非法。
{
printf("輸入年月日不合法 ");//提示並退出。
return-1;
}
for(i=0;i<m-1;i++)//累加之前各個月。
r+=mdays[i];
r+=d;//累加日期值。
printf("%d ",r);//輸出結果。
return0;
}
2. 用c語言編程計算輸入出生日期可計算出到現在存活時間天數
使用time.h,首先使用mktime函數將出生日期換算成time_t,也就是秒數。然後再使用time函數獲取當時時間的秒數,兩者相減,就是相差的秒數,再除以一天的秒數換算成天數就可以了。
全部源碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
main()
{
intyear,mon,mday;
time_tt1,t2;
intdays;
structtmtm;
printf("Pleaseinputyear,mon,day:");
scanf("%d,%d,%d",&year,&mon,&mday);
memset(&tm,0,sizeof(tm));
tm.tm_year=year-1900;
tm.tm_mon=mon-1;
tm.tm_mday=mday;
t1=mktime(&tm);
t2=time(NULL);
days=(t2-t1)/(24*3600);
printf("%d ",days);
}
3. 從鍵盤輸入一個年月日,編程求這一天到年底的天數
假設輸入日期格式為:yyyy-mm-dd,如2022-1-1,C語言代碼如下:
#include <stdio.h>
int main() {
int y, m, d, i;
scanf("%d-%d-%d", &y, &m, &d); // 要求輸入日期格式為yyyy-mm-dd
姿漏橋 int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) // 閏年
month[2] = 29; // 閏年2月為29天
if (m <= 0 || m > 12) {
printf("月份%d不屬於[1,12],程序退出 ", m);
return -1;
}
int days = month[m] - d; // 距當月月底的天數
if (days < 0) {
printf("%d年%d月最多%d天,程序退出 ", y, m, month[m]);
return -1;
}
for (i = m + 1; i <= 12; i++)
days += month[i]; // 下月開始距年底的天數
printf("%d ", days);
return 0;
}
運行結果如下:
輸入2022-1-1,2022年為平年搜頌,一年共365天跡猛,所以2022年第一天距年底還有364天
輸出為364,符合題意,望採納~
4. 怎麼用C語言輸入一個日期,求該日期是該年的第幾天
我大概給個思路,頃橡世代碼是現寫的 沒調如租試
先定義每個月的天數,2月按28天算
輸入雀肢年月日後,根據年判斷是否閏年(閏年加1天),再從1月加到當月的前一月,再加上日期就可以了
#include <stdio.h>
int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
main()
{int yy,mm,dd, days;
int i;
printf("input year:"); scanf("%d", &yy);
printf("input month:"); scanf("%d", &mm);
printf("input day:"); scanf("%d", &dd);
/* 如果大於2月,要做閏年的判斷,忘了,不一定準 */
if( mm > 2 && ((year%4==0 && year%100!=0) || year%400==0) ) days = 1;
else days = 0;
/* 加上前面各整月的天數 */
for(i = 0; i < mm-1; i++) days += month[i];
/* 加上日數 */
days += dd;
printf("This is the %d day of year %d!!
", days, yy);
}
比如輸入 1999 2 1
應該輸出:This is the 32 day of year 1999!!
5. c語言關於計算天數
m[12]=(31,28,31,30,31,30,31,31,30,31,30,31);
這句的寫法是錯的
一、初始化應該在數組定義時
二、括弧應該用{}
修改如下:
int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
具體到其它問題,請LZ自行查閱處理,你的演算法邏輯好麻煩,看的不是很懂
6. c語言編寫程序,輸入某年某月,求該月的天數
#include<iostream.h>
voidmain()
{
intYear,Month,Day;
cout<<"Pleaseenterthecurrentdate(年月以空格分隔):";
cin>>Year>>Month;
while(Month<=0||Month>12)
{
cout<<"輸入時間有誤,請重新輸入:";
cin>>Year>>Month;
}
switch(Month)
{
case4:
case6:
case8:
case9:
case11:
Day=30;
break;
case2:
if(Year%400==0||Year%4==0&&nYear%100!=0)
Day=29;
else
Day=28;
break;
default:Day=31;
}
cout<<"該月天數為:"<<Day<<"天";
}
7. c語言編程:輸入年月日,求出該天是該年的第幾天
#include<stdio.h>
intmain()
{intday,month,year,sum,leap;
printf(" 請輸入年、月、日,格式為:年,月,日(2015,12,10) ");
scanf("%d%d%d",&year,&month,&day);//格式為:20190510
switch(month)//先計算某月以前月份的總天數
{case1:sum=0;break;
case2:sum=31;break;
case3:sum=59;break;
case4:sum=90;break;
case5:sum=120;break;
case6:sum=151;break;
case7:sum=181;break;
case8:sum=212;break;
case9:sum=243;break;
case10:sum=273;break;
case11:sum=304;break;
case12:sum=334;break;
default:printf("dataerror");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("這是這一年的第%d天。",sum);
printf(" ");
}
(7)輸入日期算天數c語言擴展閱讀
使用c語言編程結構tm格式化時間注意事項:
tm結構在C/C++中處理日期和時間相關的操作時,顯得尤為重要。tm結構以C結構的形式保存日期和時間,大多數與時間相關的函數都使用了tm結構。
使用了tm結構和各種與日期和時間相關的函數。在練習使用結構之前,需要對C結構有基本的了解,並懂得如何使用箭頭->運算符來訪問結構成員。
8. 急求!C語言計算天數
#include<stdio.h>
int main()
{
int yyyy,mm,dd,a,b;
scanf("%d/%d/%d",&yyyy,&mm,&dd);
a=31*(mm>1)+28*(mm>2)+31*(mm>3)+30*(mm>4)+31*(mm>5)+30*(mm>6)+31*(mm>7)+31*(mm>8)+30*(mm>9)+31*(mm>10)+30*(mm>11)+dd;
b=((yyyy%4==0)*(yyyy%100!=0)+(yyyy%400==0))*(mm>2);
printf("%d\n",a+b);
return 0;
}
9. 輸入年,月,計算該月的天數 C語言程序
#include"stdio.h"
#include"stdlib.h"
intmain()
{inty,m,days;//存放年、月、天數的變數
printf("請輸入年、月(逗號隔開):
");//輸入提示
scanf("%d,%d",&y,&m);//輸入邊長(輸入時用逗號隔開)
printf("%d%d
",y,m);
switch(m)
{case1:case3:case5:case7:case8:case10:case12:days=31;break;
case4:case6:case9:case11:days=30;break;
case2:{if(y%4==0&&y%100!=0||y%400==0)days=29;//閏年
elsedays=28;
break;
}
default:days=0;//輸入月份不對
}
printf("%d年%d月有%d天
",y,m,days);
system("pause");
}
10. C語言輸入年月日計算該日是該年第幾天,
//根據用戶輸入的日期計算出該日期是該年的第多少天。
#include
#include
//system("pause")
main()
{
int year,month,day,total,leap; //total總天數 ,leap用於閏年的2月天數
printf("請輸入年 月 日(按順序,中間用空格隔開):");
scanf("%d%d%d",&year,&month,&day);
if((year%4==0 && year%100!=0) || year%400==0) //判斷是否閏年,閏年2月多一天,所以閏年leap為1,平年為leap為0。
{
leap=1;
}
else
{
leap=0;
}
switch(month) //根據月份計算對應的最終天數。
{
case 1: total=day;break;
case 2: total=31*1+day;break;
case 3: total=31*1+28+leap+day;break;
case 4: total=31*2+28+leap+day;break;
case 5: total=31*2+28+leap+30*1+day;break;
case 6: total=31*3+28+leap+30*1+day;break;
case 7: total=31*3+28+leap+30*2+day;break;
case 8: total=31*4+28+leap+30*2+day;break;
case 9: total=31*5+28+leap+30*2+day;break;
case 10: total=31*5+28+leap+30*3+day;break;
case 11: total=31*6+28+leap+30*3+day;break;
case 12: total=31*6+28+leap+30*4+day;break; //12月之前的11個月中有6個31天,4個30天,2月為28天+leap。
}
if(year>=1 && year<=9999 && month>=1 && month<=12 && day>=1 && day<=31) //判斷輸入是否正解,年份最大為9999,可自行更改。
{
printf("\n\t%d月%d日止,%d年已過去%d天。\n\n",month,day,year,total);
system("pause"); //按任意鍵繼續...
}
else
{
printf("\n\t錯誤\n\n");
system("pause"); //按任意鍵繼續...
}
return 0;
}