zoukankan      html  css  js  c++  java
  • 武汉科技大学ACM :1010: 华科版C语言程序设计教程(第二版)例题7.8

    Problem Description

    输入一个用年月日表示的日期,求该日期是该年的第几天。输入某年的第几天,输出这一天是该年的几月几号,茂茂解不出,需要你的帮助。

    Input

    开始有个整数k,表示询问的种类,如果k=1,后面有三个合法的整数a,b,c,表示输入的年月日,此时输出该日期是该年的第几天;如果k=2,后面有两个合法的整数a,b,求a年的第b天的日期。保证所有的输入合法。

    Output

    对于询问1,输出一个整数表示是该年的第几天。 对于询问2,输出年月月,格式为****/**/** 如2013/09/07

    Sample Input

    2 2013 70
    1 2013 3 1
    1 2000 3 1
    

    Sample Output

    2013/03/11
    60
    61
    


    我的代码:
     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     struct mydata
     6     {
     7         int year;
     8         int month;
     9         int day;
    10     } date;
    11     int days,month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    12     int dyas[13]={0,31,60,91,121,152,182,213,244,274,305,335,366};
    13     int dyas1[13]={0,31,59,90,120,151,181,212,243,273,304,334,365};    
    14     int sw,yera,dya,mon=-1,d,i;
    15     while(scanf("%d",&sw)!= EOF)
    16     {
    17         if(1==sw)
    18         {
    19             days=0;
    20             scanf("%d%d%d",&date.year,&date.month,&date.day);
    21             int i;
    22             for(i=0;i<date.month;i++)
    23                 days+=month[i];
    24             days+=date.day;
    25             if((date.year%4==0&&date.year%100!=0)||(date.year%400==0))
    26                 if(date.month>=3)
    27                     days++;
    28                 printf("%d
    ",days);
    29         }
    30         if(2==sw)
    31         {
    32             
    33             scanf("%d%d",&yera,&dya);
    34             if((yera%4==0&&yera%100!=0)||(yera%400==0))
    35             {
    36                 for(i=0;i<13;i++)
    37                 {
    38                     if(dyas[i]>dya)
    39                     {
    40                         mon=i;
    41                         d=dya-dyas[i-1];
    42                         break;
    43                     }
    44                     else if(dyas[i]==dya)
    45                     {
    46                         mon=i;
    47                         d=month[i];
    48                         if(mon==2)
    49                             d++;
    50                         break;
    51                     }
    52                 }
    53             }
    54             else
    55             {
    56                 for(i=0;i<13;i++)
    57                 {
    58                     if(dyas1[i]>dya)
    59                     {
    60                         mon=i;
    61                         d=dya-dyas1[i-1];
    62                         break;
    63                     }
    64                     else if(dyas1[i]==dya)
    65                     {
    66                         mon=i;
    67                         d=month[i];
    68                         break;
    69                     }
    70                 }
    71                 
    72             }            
    73             printf("%04d/%02d/%02d
    ",yera,mon,d);            
    74         }
    75         
    76     }
    77     
    78     return 1;
    79 }

    其他代码:

     1 #include <iostream>
     2 
     3 using namespace std;
     4 int isRN(int y)
     5 {
     6     if((y%4==0&&y%100!=0)||y%400==0)
     7     {
     8         return 1;
     9     }
    10     return 0;
    11 }
    12 int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
    13 int main()
    14 {
    15     int n;
    16     int y,m,d;
    17     int s;
    18     int flag;
    19     while(cin>>n)
    20     {
    21 
    22         s=0;
    23         if(n==1)
    24         {
    25                 cin>>y>>m>>d;
    26                 flag=isRN(y);
    27                 for(int i=1;i<m;++i)
    28                 {
    29                     s+=a[flag][i];
    30                 }
    31                 s+=d;
    32                 cout<<s<<endl;
    33         }
    34         else if(n==2)
    35         {
    36             cin>>y>>s;
    37             flag=isRN(y);
    38             m=0;
    39             do{
    40                 s-=a[flag][++m];
    41             }while(s>0);
    42             d = s+a[flag][m];
    43             if(m>=10)
    44             {
    45                 cout<<y<<"/"<<m<<"/"<<d<<endl;
    46             }
    47             else
    48             {
    49                 cout<<y<<"/0"<<m<<"/"<<d<<endl;
    50 
    51             }
    52 
    53         }
    54 
    55 
    56     }
    57     return 0;
    58 }
  • 相关阅读:
    javascript中的console.log有什么作用?
    在线js调试工具JSbin、jsFiddle
    mysql下的将多个字段名的值复制到另一个字段名中(批量更新数据)字符串拼接cancat实战例子
    处理内容有&特殊字符thinkphp返回xml无法解析的问题<![CDATA[xxx]]>
    checkbox的readonly不起作用的解决方案
    jquery-easyui combobox combogrid 级联不可编辑实例
    表格行的全选与单选
    表格与ckeckbox的全选与单选
    隐藏与显示铵钮
    判断字符是否包含有特殊字符
  • 原文地址:https://www.cnblogs.com/liuwt365/p/4147432.html
Copyright © 2011-2022 走看看