首页 > 代码库 > 华为机试—算日期
华为机试—算日期
题目:算日期
输入一个日期,输出这是这一年的第几天。(题目中没有给出闰年的定义)
输入 20131231
输出 365
#include<stdio.h> #include<stdlib.h> #include<string.h> int months[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int y,m,d; int isLeapYear(int y) { if((y%4==0&&y%100!=0)|| y%400==0)return 1; else return 0; } int solve() { int ans=0; int i=1; while(i<m) ans+=months[i++]; ans+=d; return ans; } int main(int argc, char *argv[]) { char s[10]; while(~scanf("%s",s)) { char tmp[5]; strncpy(tmp,s,4); tmp[4]='\0'; y=atoi(tmp); strncpy(tmp,s+4,2); tmp[2]='\0'; m=atoi(tmp); strncpy(tmp,s+6,2); tmp[2]='\0'; d=atoi(tmp); if(isLeapYear(y)) { months[2]+=1; printf("%d\n",solve()); months[2]-=1; } else printf("%d\n",solve()); } return 0; }
华为机试—算日期
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。