中南大学复试上机:第几天

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuehailin/article/details/87737667

1015: 第几天

时间限制: 1 Sec  内存限制: 128 MB

题目描述

给定一个日期, 输出这个日期是该年的第几天。

输入

数据格式为 YYYY/MM/DD组成, 具体参见输入示例。另外,所有输入数据是合法的。

输出

对于每组输入数据,输出一行,表示该日期是该年的第几天。

样例输入

1985/01/20
2006/03/12

样例输出

20
71

在写代码之前我记录一下自己学到的一些c语言的知识:
 

1.字符串s=‘123’转换成数字123用atoi(s);

2.c语言中用strncpy来截取字符串

    strncpy(year,a,4);//截取a中前4个字符到year字符中
    strncpy(mon,a+5,2);//截取a中6到7个字符(包括6和7)

代码:

扫描二维码关注公众号,回复: 5310777 查看本文章
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
	char a[100];
	int ping[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	int run[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};

	while(scanf("%s",a)!=EOF){
		int tianshu=0;
	int len;
	len = strlen(a);
	int i;
	char year[4];
	char mon[2];
	char day[2];
	strncpy(year,a,4);
	strncpy(mon,a+5,2);
	strncpy(day,a+8,2);
	int nian,yue,tian;
	nian = atoi(year);
	yue = atoi(mon);
	tian = atoi(day);
	
	if(nian%400==0||(nian%4==0&&nian%100!=0)){
		for(i=1;i<yue;i++){
			tianshu = tianshu+run[i]; 
		}
		tianshu = tianshu+tian;
	}
	else{
		for(i=1;i<yue;i++){
			tianshu = tianshu+ping[i]; 
		}
		tianshu = tianshu+tian;
	}
	
	printf("%d\n",tianshu);
}

}

猜你喜欢

转载自blog.csdn.net/yuehailin/article/details/87737667