用c 语言编写程序:根据输入的年、月、日,求出该日是这一年中的第几天?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用c 语言编写程序:根据输入的年、月、日,求出该日是这一年中的第几天?相关的知识,希望对你有一定的参考价值。

大家帮帮忙~~谢谢

没有判断输入不合常识的情况

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()

int a[12] = 31,28,31,30,31,30,31,31,30,31,30,31;
printf("请输入年月日(YYYY-MM-DD):");
char s[11] = '\0',year[5] = '\0',month[3] = '\0',day[3] = '\0';
int y,m,d,sum = 0;
scanf("%s", &s);
int size = strlen(s);
for(int it = 0,temp = 0; it < size; it++,temp++)

if(s[it] != '-')

year[temp] = s[it];
continue;

else
break;

it++;
temp = 0;
for(; it < size; it++,temp++)

if(s[it] != '-')

month[temp] = s[it];
continue;

else
break;

it++;
temp = 0;
for(; it < size; it++,temp++)

day[temp] = s[it];

y = atoi(year);
m = atoi(month);
d = atoi(day);
if(m > 2 && y % 4 == 0 || (y % 100 == 0 && y % 400 == 0))
sum += 1;
for(int i = 0; i < m - 1; i++)
sum += a[i];
sum += d;
printf("这是%d年的第%d天\n",y,sum);
return 0;
参考技术A 思路:
1.把年月日分类
2.年分两类 闰年和非闰年
3.月分三类 小月30天 大月31天 2月 28或29天(根据2判断)
4.剩下的就是求和了。
例如:2008年6月2日。
1.判断是否闰年
2.前5个月的日期累加求和,加上6月的日期,这样就可以求出来了。
代码可以查,思路最重要。理清思路就知道应该怎么去下手。
参考技术B 求一天是一年中的第几天

CopyRight: 本来属于原创,您可以任意修改,传播,以及商业用途,需注明来自本博客,希望对您有用!
from: http://blog.csdn.net/wanfustudio author: wanfustudio

Question: 经常在csdn上看到问这样一类问题:
1.tm_hour如何计算一年中第多少天使星期几
2.指定的某年某月某日是第几天
3.一个日期加上一个偏移是哪一天
4.......
这样的问题还有很多不一一赘述

#include <stdio.h>
#include <string.h>
#include <time.h>

const char *Week[]=

"星期天",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六"
;

#if 0
struct tm
int tm_sec; /* seconds after the minute - [0,59] */
int tm_min; /* minutes after the hour - [0,59] */
int tm_hour; /* hours since midnight - [0,23] */
int tm_mday; /* day of the month - [1,31] */
int tm_mon; /* months since January - [0,11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday - [0,6] */
int tm_yday; /* days since January 1 - [0,365] */
int tm_isdst; /* daylight savings time flag */
;
#endif

void GetWeekDay(int year,int num);
void GetSomeDay(int year, int mon, int day);
void GetNextTime(int year, int mon, int day,int num);

int main()

GetWeekDay(2007,337);
GetSomeDay(2007,12,4);
GetNextTime(2007,12,4,30);
return 0;


void GetSomeDay(int year, int mon, int day)

time_t t;//存储需要计算时间距1900的秒数
struct tm test ;//填充这个结构

memset(&test, 0, sizeof(tm));//先清空下

test.tm_year = year - 1900;
test.tm_mon = mon -1;
test.tm_mday = day ;

t = mktime(&test);// 转换成秒
struct tm *now = localtime(&t);//再转回tm

printf("%d\n", now->tm_yday);//第几天
printf("%s\n", Week[now->tm_wday]);//星期几


void GetNextTime(int year, int mon, int day,int num)


struct tm now, tmp;
time_t t;

memset(&now, 0 , sizeof(struct tm));
memset(&tmp, 0 , sizeof(struct tm));

now.tm_year = year-1900; //指定年
now.tm_mon = mon -1;//指定月份
now.tm_mday = day + num; //指定是哪一天

t = mktime(&now);//转换成秒

struct tm *pNext = localtime(&t);

printf("%s\n", asctime(pNext));//哪一天
printf("%s\n", Week[pNext->tm_wday]);//星期几



void GetWeekDay(int year,int num)

time_t t;//存储需要计算时间距1900的秒数
struct tm test ;//填充这个结构

memset(&test, 0, sizeof(tm));//先清空下

test.tm_year = year - 1900;
test.tm_mday = num +1;

t = mktime(&test);// 转换成秒
struct tm *now = localtime(&t);//再转回tm

printf("%d\n", now->tm_yday);//第几天
printf("%s\n", Week[now->tm_wday]);//星期几

参考资料:http://blog.csdn.net/wanfustudio/archive/2007/12/03/1914352.aspx

参考技术C 1.闰年判断条件: n%4==0 && n%100!=0 || n%400==0
2.大小月自己考虑,2月根据闰年来。
第几天应该不难求了吧

一年的第几天

题目描述

输入年、月、日,计算该天是本年的第几天。

输入描述:

包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。

输出描述:

输入可能有多组测试数据,对于每一组测试数据,
输出一个整数,代表Input中的年、月、日对应本年的第几天。

分析:

用一个数组保存每个月有多少天,再根据输入是否润年修改二月

#include <iostream>


using namespace std;

int main() {
    int y, m, d;
    int month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int days = 0;
    while(cin >> y >> m >> d){
        if(y % 4 == 0) month[1] = 29;
        for(int i = 0; i < m - 1; i++)
            days += month[i];
        days += d;
        cout << days << endl;
    }
    return 0;
}

以上是关于用c 语言编写程序:根据输入的年、月、日,求出该日是这一年中的第几天?的主要内容,如果未能解决你的问题,请参考以下文章

C语言的问题:根据输入的年月日,输出该日为该年度的第几周、第几天、星期几。

用Java编写一个日期查询程序

用C语言写一个函数,给出年月日,计算该日是该年的第几天

c语言将日期转换为字符串 急求,谢谢!

YTUOJ-计算该日在本年中是第几天(用户自己定义类型)

用C语言写一个函数,给出年月日,计算该日是该年的第几天