#include <stdio.h>
#include <string.h>
int m2 = ;
int judge_year(int x)
{ if(x % == || x % == && x % != )
return ;
else
return ; } //extern int m2;
int calculate_year(int *x, int y)
{ //extern int m2 = ;//出现 cannot initialize extern variables with block scope错误,即不能在块作用域里声明全局变量 int span = ;
while(*x - span >= ){ y++;/*天数满一年加1*/
*x -= span;/*减去今年的天数*/
span = judge_year(y) ? : ;/*判断下一年的天数*/ }
m2 = judge_year(y) ? : ;/*判断几天后2月份的天数*/
return y; }
//extern int m2;
int calculate_month(int *x, int m)
{ int span = ;
while(*x - span >= ){ m++;
*x -= span;
if(m == || m == || m == || m == || m == || m == || m == )
{ span = ; }
else if(m == || m == || m == || m == )
{ span = ; }
else
{ span = m2; } }
return m; } extern int m2;
int main()
{ int year = , month = , day = , L_year, L_month, sum, X_sum;
char s[];
//int m2=29;
while(scanf("%d", &sum) && sum != -){ day = ;
X_sum = sum;
L_year = calculate_year(&sum, year);
L_month = calculate_month(&sum, month);
day += sum;
switch(X_sum % )
{ case : strcpy(s, "Friday"); break;
case : strcpy(s, "Saturday"); break;
case : strcpy(s, "Sunday"); break;
case : strcpy(s, "Monday"); break;
case : strcpy(s, "Tuesday"); break;
case : strcpy(s, "Wednesday"); break;
case : strcpy(s, "Thursday"); }
printf("%d-", L_year);
if(L_month <= )
printf("0%d-", L_month);
else
printf("%d-", L_month);
if(day <= )
printf("0%d ", day);
else
printf("%d ", day);
printf("%s\n", s);
// printf("%d %d %d\n", L_year, m2, L_month); }
return ; }

一个学姐路过,看到我的代码,认为没有那么麻烦,于是自己写了一个,

 #include <stdio.h>
#include <string.h>
int judge_year(int x)
{ if(x % == || x % == && x % != )
return ;
else
return ; }
int main()
{
int year = , month = , day = ,sum,week,i;
int ans[]={,,,,,,,,,,,},a[]={,};
char s[][]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
while(scanf("%d", &sum) && sum != -)
{
week=sum%;
year = , month = , day = ;
while(sum>=a[judge_year(year)])
{
sum-=a[judge_year(year)];
year++;
}
if(judge_year(year))
ans[]=;
else
ans[]=;
for(i=;i<;i++)
{
if(sum>=ans[i])
{
sum-=ans[i];
month++;
}
else
break;
}
day+=sum;
printf("%4d-%02d-%02d %s\n",year,month,day,s[week]);
}
return ;
}

跟我的执行时间等等一样,但长度明显短了许多。

已知一个日期和天数, 求多少天后的日期(是那个超时代码的AC版)的更多相关文章

  1. 已知一个正整数m,编写一个程序求m的反序数(待消化)

    import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/5 21:08 * @description ...

  2. 面试题: 已知一个含有n个不同元素的集合,要求打印其所有具有k个元素的子集(不允许有重复的)

    TX面试题2: 已知一个含有n个元素的集合,要求打印其所有具有k个元素的子集(不允许有重复的) 题目分析, 为了便于说明,不妨将问题简化一下: 已知一个盒子中有n个不同的球,分别标记为{a1,a2,. ...

  3. 已知一个字符串S 以及长度为n的字符数组a,编写一个函数,统计a中每个字符在字符串中的出现次数

    import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 21:04 * @description ...

  4. 已知一个函数rand7()能够生成1-7的随机数,请给出一个函数rand10(),该函数能够生成1-10的随机数。

    题目: 已知一个函数rand7()能够生成1-7的随机数,请给出一个函数,该函数能够生成1-10的随机数. 思路: 假如已知一个函数能够生成1-49的随机数,那么如何以此生成1-10的随机数呢? 解法 ...

  5. 转 已知两点坐标和半径求圆心坐标程序C++

      数学思想:利用圆方程和直线方程 已知两点坐标和半径求圆心坐标程序 #include <iostream> #include <fstream> #include <c ...

  6. java面试题:已知一个数组[2,4,6,2,1,5],将该数组进行排序(降序,不能用工具类进行排序),创建两条线程交替输出排序后的数组,线程名自定义

    package com.swift; import java.util.Arrays; import java.util.Comparator; public class ArrayThread_Te ...

  7. 已知一个序列A1.A2….An,给你一个整数K,找到满足所有Ai+Aj>=k的数对(i,j)的个数

    #include<bits/stdc++.h> using namespace std; #define ll long long #define maxn 100010 /* 已知一个序 ...

  8. poj1190,DFS/已知一个等式,求另一个最小值

    7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体.  设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱. ...

  9. NX二次开发-UFUN已知两个向量方向求夹角角度UF_VEC3_angle_between

    NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_vec.h> #include <uf_ ...

随机推荐

  1. 快速幂 fast_exp

    long long fast_exp(int base,long long exp,int mod) { long long ans=1LL,a=base; ) { if(exp&1LL) a ...

  2. CentOS安装PHP和mysql

    新生在不会编译的情况下: 1.安装PHP5 yum install php 根据提示输入Y直到安装完成 2.安装PHP组件,使 PHP5 支持 MySQL yum install php-mysql  ...

  3. jade学习02

    模版继承 ; block,extends ;如果是原生html文件的话,后缀html //layout.jade doctype html html head meat(charset='utf-8' ...

  4. js-Ajax与Comet

    Ajax与Comet: 1.Ajax技术的核心是XHR(XMLHTTPRequest对象) 创建xhr对象: function createXHR(){ if(typeof XMLHttpReques ...

  5. PHP历程(封装的增删改查方法)

    db.class.php   主要方法 <?php /** * 数据库配置信息 */ define('DB_HOST','127.0.0.1'); //服务器 define('DB_USER', ...

  6. 如何解决在Ue4编辑器中查看中文注释为乱码的情况

    一般人都会在自己定义的函数后面添加注释,Ue4会在蓝图编辑器中显示这些注释,这是一个相当棒的设定. 但是如果这些注释是中文的话,在蓝图编辑器中就会显示乱码. 如何解决呢? 只需要把你的文件用UTF-8 ...

  7. poj2612Mine Sweeper

    很简单的模拟题目,但在队内赛的时候一直WA了10发...我ca 题目没看懂,也不算,就是我以为摸到地雷他会标星(*) ,但其实还是(x),T_T #include <cstdio> #in ...

  8. jQuery Dialog and timepicker显示层的问题

    timepicker官网http://timepicker.co/demos/ 当在dialogue上面调用时间选择时,时间选择的框框被dialogue窗口挡住了. 搜出来的方法说修改css,根本改不 ...

  9. Java 动态代理

    被代理的接口特点: 1. 不能有重复的接口,以避免动态代理类代码生成时的编译错误. 2. 这些接口对于类装载器必须可见,否则类装载器将无法链接它们,将会导致类定义失败. 3. 需被代理的所有非 pub ...

  10. Window.location

    1.location 对象 // 假设当前url是 http://localhost/rpc/plugin.php#hash?a=aaa&b=bbb alert(window.location ...