Ⅰ 用c語言從鍵盤任意輸入一個日期(年月日),輸出第二天的日期(年月日)。
源程序如下:
#include "pch.h"
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
int main()
{
int s[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, };
int year = 0;
int month = 0;
int day = 0;
int n, i, daytemp;
int flag = 0;
int nyear = 0, nmonth = 0, nday = 0;
printf("輸入年月日
");
scanf("%d%d%d", &year, &month, &day);
//printf("輸入天數
");
//scanf("%d",&n);
n = 1;
if (year < 0 || month < 0 || month>12 || day < 1 || n < 0)
{
printf("輸入數據錯誤
");
return 1;
}
daytemp = day + n;//累加天數
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)//閏年置1
flag = 1;
if (day > s[flag][month])
{
printf("輸入日期與年月不符.
");
return 1;
}
if (daytemp <= s[flag][month])//當前日期加天數在本月
{
nyear = year;
nmonth = month;
nday = daytemp;
}
else
{
i = month;
nyear = year;
while (daytemp > s[flag][i])//循環遞減,直到當前日期加天數在本月
{
daytemp = daytemp - s[flag][i];
i++;
if (i > 12)//超過一年,年累加
{
nyear++;
if ((nyear % 4 == 0 && nyear % 100 != 0) || nyear % 400 == 0)
flag = 1;
else
flag = 0;
i = i - 12;
}
}
nmonth = i;
nday = daytemp;
}
printf("%d年%d月%d日第%d天後是:
", year, month, day, n);
printf("%d年%d月%d日
", nyear, nmonth, nday);
return 0;
}
程序運行結果如下:
(1)c語言年月日擴展閱讀:
其他實現方式:
int monthsize(int year, int month) {
int days;
if (month == 2) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
return 29;
return 28;
}
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:days = 31; break;
case 4:
case 6:
case 9:
case 11: days = 30; break;
}
return days;
}
int main()
int year, month, day, days;
printf("年 月 日:");
while (scanf("%d%d%d", &year, &month, &day) == 3) {
days = monthsize(year, month);
if (days == day) {
if (month == 12) {
++year;
month = 1;
day = 1;
}
else ++month;
}
else ++day;
printf("第二天是:%d/%02d/%02d
", year, month, day);
printf("年 月 日(q to quit):");
}
return 0;
}
Ⅱ c語言年月日計算
首先,你的閏年判斷就有問題。教你個口訣:「四年一潤,一百年不潤,四百年再潤」。
其實就可以用if(yr%4==0||yr%100!=0&&yr%400==0){那麼是閏年}
你的檢驗判斷也可以利用mont數組的,首先判斷是不是在閏年,然後判斷輸入days是不是大於的mont[mn](如果是閏年要判斷二月+1)。
Ⅲ C語言編寫 輸入 年 月 日 ,輸出這個日期的下一天的日期
利用C標准函數time,localtime,mktime來實現
先將輸入的年月日放到tm結構中
用mktime()函數生成一個整數
用這個整數+86400(24*60*60)
然後再轉換成日期就OK了
Ⅳ C語言輸出用戶輸入的年月日
void main()
{
int day;
int year;
char month[3];
scanf("%d,%s,%d",&day,&month,&year);
printf("%d,%s,%d",&day,&month,&year);
}
Ⅳ C語言中如何把月日年輸出為年月日
這要看原來的程序中,月日年是怎麼組織的?如果分別存放在三個變數中,那麼只要把這三個變數的輸出順序交換一下就可以了。
例如,
int y,m,dm,d;
printf("請輸入月 日 年:");
scanf("%d%d%d",&m,&d,&y);
printf("%d年%d月%d日",y,m,d);
Ⅵ C語言 日期(年月日 ) 排序
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
/*
一月 Jan. January
二月 Feb. February
三月 Mar. March
四月 Apr. April
五月 May. May
六月 June. June
七月 July. July
八月 Aug. Aguest
九月 Sept. September
十月 Oct. October
十一月 Nov. November
十二月 Dec. December
縮寫:正規的英語中六月、七月不縮寫,九月的縮寫是4個字母,其他月份3個字母。
*/
char strm[12][10]={"Jan","Feb","Mar","Apr","May","June","July","Aug","Sept","Oct","Nov","Dec"};
struct Date
{
int y,d;
char m[10];
int value;
}d[10000];
int findm(char m[])
{
int i;
for(i=0;i<12;i++)
if(strcmp(m,strm[i])==0)return i;
return -1;
}
bool cmp(Date a,Date b)
{
return a.value<b.value;
}
int main()
{
int n=3,i,j;
/*
3
00 Jan 11
99 Feb 22
08 Mar 02
*/
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%s%d",&d[i].y,d[i].m,&d[i].d);
j=findm(d[i].m);
d[i].value=d[i].y*10000+j*100+d[i].d;
}
sort(d,d+n,cmp);
for(i=0;i<n;i++)
{
printf("%02d %s %02d\n",d[i].y,d[i].m,d[i].d);
}
return 0;
}
Ⅶ C語言輸入年月日計算該日是該年第幾天,
你這裡面有好幾處問題:
1、for (i=1;i<month;i++),注意C語言的下標是從0開始,應該改為for (i=0;i<month-2;i++)
2、a=a+b[i];你這里的變數a沒有初始化為0,應該int a=0;
3、sumupDays=isLeapYear(year)+day+a;如果是閏年的一月和二月,也沒必要多加一天;應該先判斷月份是否大於2;
4、判斷閏年的函數int isLeapYear(int year)貌似也不對,應該是
int isLeapYear(int year)
{ int leap;
if ((year%4=0) && (year%100!=0)) //能被4整除而不能被100整除
leap=1;
else if(year%400=0) //能被400整除
leap=1;
else leap=0;
return(leap);
}
Ⅷ C語言中輸入年月日,判斷這一天是一年的第幾天……
以2月10日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大於3時需考慮多加一天。
源代碼:
#include "stdio.h"
#include "stdlib.h"
int main()
{
int day,month,year,sum,leap;
printf(" please input year,month,day ");
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);
return 0;
}
輸出
please input year,month,day
2019,02,10
It is the 41th day.
(8)c語言年月日擴展閱讀
c語言編寫程序根據輸入的時間分別輸出問候語
#include <stdio.h>
int main()
{
int a;
printf("請輸入時間,例如:17");
scanf("%d",&a);
if(a<=12&&a>=0) printf("早");
else if(a>12&&a<=14) printf("午");
else printf("晚");
printf("%d",s);
return 0;
Ⅸ C語言年月日一年中第幾天
首先,定義一個數組,數組裡面有12個數據,對應每個月有多少天,
比如{31,28,31,30……}
然後當拿到輸入的年月日的時候,判斷當前年份是否為潤年,
如果是閏年的話,改變一下2月的天數
然後在判斷月份
比如是5月份
那就for循環那個數組4次
數組裡面的數據相加
然後在加上日期就好了
額,因為我是oc的,C語音基礎不是很好,
不過大概就是這個思路……
Ⅹ C語言 年月日
定義個結構數組,分別保存年月日
兩個變數,一個保存生日一個保存當前日期
然後兩個變數相減