码迷,mamicode.com
首页 > 编程语言 > 详细

武汉科技大学ACM :1010: 华科版C语言程序设计教程(第二版)例题7.8

时间:2014-12-05 21:10:45      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   io   ar   color   os   sp   for   

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\n",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\n",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 }

 

武汉科技大学ACM :1010: 华科版C语言程序设计教程(第二版)例题7.8

标签:des   style   blog   io   ar   color   os   sp   for   

原文地址:http://www.cnblogs.com/liuwt365/p/4147432.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!