#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. strcmp函数的使用

    Action() { /*********************************   * Author:旺仔   * object:strcmp   * date:2015-12-09    ...

  2. hdu3033 背包变形

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3033 大意:每类物品中至少买一件,比较简单 AC代码: #include<iostr ...

  3. XSS 跨站脚本攻击之构造剖析(二)

    1.利用字符编码 (1)字符编码在跨站脚本中经常运用到,透过这种技巧,不仅能让XSS代码绕过服务端的过滤,还能更好的隐藏ShellCode (2)使用一个XSS编码工具,以便对字符串进行十进制和十六进 ...

  4. 【面试题】TB

    动态库与静态库区别: 堆栈区别,这样区分的意义: 不用第三个变量,交换两个变量的值: 链表公共节点: 判断链表是否有环: 常用排序算法,哪个可以链表实现: 哪科学的好,感兴趣: 项目介绍,遇到的最大问 ...

  5. Python学习笔记03

      区间访问:[from:to:step] step默认是1:from表示起始索引(包括),to表示结束索引(不包括) step如果有符号,表示方向从右到左; from,to有符号,表示从倒数开始算, ...

  6. 如何处理js的跨域问题

    在bill.mail.10086.cn域内访问smsrebuild1.mail.10086.cn下的接口出现“阻止跨域源请求” 例如: URL 说明 是否允许通信 http://www.a.com/a ...

  7. http 上传文件

    @RequestMapping(method=RequestMethod.POST,value = "/upload") public ModelAndView processIm ...

  8. Theano深度学习结构分析

    Reference:Theano入门三部曲 http://deeplearning.net/tutorial/logreg.html  (Softmax回归) http://deeplearning. ...

  9. 转载 r.js打包经验

    例子1 先是HTML页面 <!DOCTYPE html> <html>     <head>         <title>My App</tit ...

  10. 20145304 Java第八周学习报告

    20145304<Java程序设计>第八周学习总结 教材学习内容总结 NIO NIO使用频道来衔接数据节点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记 ...