| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 631 人关注过本帖
标题:大家帮忙看看这个程序那些地方可以优化,感觉太长了····
只看楼主 加入收藏
rjvsky
Rank: 3Rank: 3
来 自:陕西西安
等 级:论坛游侠
帖 子:77
专家分:106
注 册:2012-3-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
大家帮忙看看这个程序那些地方可以优化,感觉太长了····
程序代码:
#include <stdio.h>
#include <conio.h>

int pdNF(int a);
int pdYF(int a);
int pdRQ(int a,int b,int c);

int pdRQ(int a,int b,int c)//日期的判断
{
    int d=0,e;
    e=pdNF(a);
if (e)
        switch (b)
    {
        case 1:case 3:case 5:case 7:case 8:case 10: case 12:
               if (c>0 && c<32)
                  d=1;
               break;
        case 2:
              if (c>0 && c<30)
                  d=1;
              break;
        default : 
              if (c>0 && c<31)
                  d=1;
                break;
    }
else
    switch (b)
    {
        case 1:case 3:case 5:case 7:case 8:case 10: case 12:
               if (c>0 && c<32)
                  d=1;
               break;
        case 2:
              if (c>0 && c<28)
                  d=1;
              break;
        default : 
              if (c>0 && c<31)
                  d=1;
                break;
    }
return d;
}

int pdYF( b)//月份的判断
{
    int a=0;
    if ((b<=0) || (b>=13))
        a=0;
    else
        a=1;
return a;
}

int pdNF( a)//闰年的判断
{
    int b;
    if(!(a%4))
    {
        if(!(a%100))
        {
            if (!(a%400))
               b=1;
            else
                b=0;
        }
        else
            b=1;
    }
    else
        b=0;
return b;
}

void main(void)
{
    int a,b,c,n,y,r;
    printf ("请输入当前日期形如**** ** **:");
    scanf ("%d %d %d",&a,&b,&c);
    n=pdNF(a);
    y=pdYF(b);
    r=pdRQ(a,b,c);
    if (n && y && r)
        printf("输入日期正确,当前日期为%d年%d月%d日",a,b,c);
    else
    {
    if(!y)
        printf("输入月份不正确,无%d月份",b);
    if(!r)
        printf("输入日期不正确,在%d年%d月中无%d日",a,b,c);
    }
}
搜索更多相关主题的帖子: 优化 
2012-03-29 22:11
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:10 
程序代码:
int pdNF( a)//闰年的判断
{
    if(((a%4==0)&&(a%100!=0))||(a%400==0)) return(1);
    return(0);
}这个可以简化一下的

最基础的往往是你最容易忽略的!
2012-03-29 22:16
rjvsky
Rank: 3Rank: 3
来 自:陕西西安
等 级:论坛游侠
帖 子:77
专家分:106
注 册:2012-3-6
收藏
得分:0 
回复 2楼 于祥
日期的判断能优化吗??帮忙看看,感觉那块太长了···

企业需要的人才,是真正可以给他们带来经济效益的人,而不是一大堆没用的证书,看淡证书,强化自己···
2012-03-29 23:26
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:3 
我觉得按空间和时间效率算  应该不需要优化了吧丶

编程之路定要走完……
2012-03-29 23:35
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:2 
用 数组 实现会简洁很多,不知道你学到没有。
2012-03-30 04:38
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
优化是要优化什么?不是把代码变短就叫优化

总有那身价贱的人给作业贴回复完整的代码
2012-03-30 07:35
C_printf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:122
注 册:2010-1-26
收藏
得分:5 
非闰年,只有1到27号?
还有,,,
int pdYF( b)//月份的判断
{
    if ( b<1|| b>12) //这不用 <=0 || >=13 ,岂不是更直观? 月份就1-12,为什么要整0 13
        return 0;
    return 1;
}
这样岂不是更好,掌握语法特性
等等等,自己琢磨吧
2012-03-30 09:49
rjvsky
Rank: 3Rank: 3
来 自:陕西西安
等 级:论坛游侠
帖 子:77
专家分:106
注 册:2012-3-6
收藏
得分:0 
回复 5楼 小赵q1
用数组???怎么实现····

企业需要的人才,是真正可以给他们带来经济效益的人,而不是一大堆没用的证书,看淡证书,强化自己···
2012-03-30 10:30
rjvsky
Rank: 3Rank: 3
来 自:陕西西安
等 级:论坛游侠
帖 子:77
专家分:106
注 册:2012-3-6
收藏
得分:0 
回复 7楼 C_printf
恩恩。那块出错了···谢了···

企业需要的人才,是真正可以给他们带来经济效益的人,而不是一大堆没用的证书,看淡证书,强化自己···
2012-03-30 10:32
rjvsky
Rank: 3Rank: 3
来 自:陕西西安
等 级:论坛游侠
帖 子:77
专家分:106
注 册:2012-3-6
收藏
得分:0 
回复 6楼 embed_xuel
那哪块的算法可以优化···

企业需要的人才,是真正可以给他们带来经济效益的人,而不是一大堆没用的证书,看淡证书,强化自己···
2012-03-30 10:33
快速回复:大家帮忙看看这个程序那些地方可以优化,感觉太长了····
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022912 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved