http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2174&cid=1174

第一种方法,用if else进行麻烦的判断。。。

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     char ch[7] ;
 6     while(~scanf("%s",ch))
 7     {
 8         int a = 10*(ch[0]-'0')+(ch[1] - '0') ;
 9         int b = 10*(ch[1]-'0')+(ch[0] - '0') ;
10         int c = 10*(ch[3]-'0')+(ch[4] - '0') ;
11         int d = 10*(ch[4]-'0')+(ch[3] - '0') ;
12         if(a >= 6&&a <= 9)
13             printf("10:01\n");
14         else if(a >= 16&&a <= 19)
15             printf("20:02\n") ;
16         else
17         {
18             if(b > c)
19             {
20                 printf("%02d:%02d\n",a,b);
21             }
22             else
23             {
24                 if(a == 23)
25                     printf("00:00\n") ;
26                 else
27                 {
28                     int x = a+1;
29                     if(x >= 6 &&x <= 9 )
30                     {
31                         printf("10:01\n");
32                         continue;
33                     }
34                     else if(x >= 16&&x <= 19)
35                     {
36                         printf("20:02\n");
37                         continue;
38                     }
39                     else
40                     {
41                         printf("%02d:%02d\n",x,(x%10)*10+(x/10));
42                         continue;
43                     }
44                 }
45             }
46         }
47     }
48     return 0 ;
49 }
View Code

第二种方法,定义结构体,把所有的情况进行枚举

 1 #include<stdio.h>
 2 #define max 1000
 3 char s[30];
 4 struct node
 5 {
 6     int h;
 7     int m;
 8 } p[30];
 9 int main()
10 {
11     p[1].h=1;
12     p[1].m=10;
13     p[2].h=2;
14     p[2].m=20;
15     p[3].h=3;
16     p[3].m=30;
17     p[4].h=4;
18     p[4].m=40;
19     p[5].h=5;
20     p[5].m=50;
21     p[6].h=10;
22     p[6].m=1;
23     p[7].h=11;
24     p[7].m=11;
25     p[8].h=12;
26     p[8].m=21;
27     p[9].h=13;
28     p[9].m=31;
29     p[10].h=14;
30     p[10].m=41;
31     p[11].h=15;
32     p[11].m=51;
33     p[12].h=20;
34     p[12].m=2;
35     p[13].h=21;
36     p[13].m=12;
37     p[14].h=22;
38     p[14].m=22;
39     p[15].h = 23 ;
40     p[15].m = 32 ;
41     while(scanf("%s",s)!=EOF)
42     {
43         int hh=(s[0]-'0')*10+(s[1]-'0');
44         int mm=(s[3]-'0')*10+(s[4]-'0');
45         if(hh==23&&mm>=32)
46         {
47             printf("00:00\n");
48         }
49         else
50         {
51             for(int i=1;i<=15;i++)
52             {
53                 if(p[i].h==hh&&p[i].m>mm)
54                 {
55                     printf("%02d:%02d\n",p[i].h,p[i].m);
56                     break;
57                 }
58                 else if(p[i].h>hh)
59                 {
60                     printf("%02d:%02d\n",p[i].h,p[i].m);
61                     break;
62                 }
63             }
64         }
65     }
66     return 0;
67 }
View Code

第三种方法,利用for循环进行循环判断,注意终止条件

 1 #include<stdio.h>
 2 int main(void)
 3 {
 4     int h, m;
 5     while(~scanf("%d:%d", &h, &m))
 6     {
 7         for(m++ ; ; m++)
 8         {
 9             if(m == 60)
10             {
11                 m = 0;
12                 h++;
13                 if(h==24) h = 0;
14             }
15             if(h%10==m/10 && m%10==h/10)
16             {
17                 printf("%02d:%02d\n", h, m);
18                 break;
19             }
20         }
21     }
22     return 0;
23 }
View Code

 

posted on 2013-06-01 20:34  枫、  阅读(214)  评论(0编辑  收藏  举报