| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1777 人关注过本帖
标题:C语言书上提供的代码,但一直编译不过,大家帮忙看一下怎么回事
取消只看楼主 加入收藏
yinzhaoyu
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-11-14
收藏
 问题点数:0 回复次数:5 
C语言书上提供的代码,但一直编译不过,大家帮忙看一下怎么回事
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
main(int x,char **date)
{                  
    int year =0,day=0,month=0,week;                //定义整形变量
    int d,i,dm,dy,m2;
    char WEEK[9];

    if(x==1)                                //判断命令行的传参个数
    {
    printf("\n ERROR ! you forget to enter the date you want to view \n");    /*没有传参时,输出此提示语句*/
        exit(0);                                                              /* 退出项目程序*/
    }

    i=0;
    d=-1;

    while(date[1][i])                        /*遍历传参,进行格式转换*/
    {
        if((date[1][i]=='/'||date[1][i]=='.')&&d==-1)
            {
             d=0;
             i++;
             continue;
            }
        if((date[1][i]=='/'||date[1][i]=='.')&&d==0)
            {
             d=1;
             i++;
             continue;
            }
        if(d==-1)
            {
             year=year*10+(date[1][i]-'0');
            }
        if(d==0)
            {
             month=month*10+(date[1][i]-'0');
            }
        if(d==1)
            {
             day=day*10+(date[1][i]-'0');
            }
        i++;
    }

    if(year==2000)
    {
        dy=0;
        m2=1;
        goto la_100;
    }

    /*当输入的年份大于2000或小于2000时,分别根据相应的公式计算出该年到2000年之间闰年所引起的星期差,
           然后计算该年1月1日到2000年1月1日的星期差。
            相关代码如下*/
            

        if(year>2000)
            d=(year-1-2000)/4-(year-1-2000)/100+(year-1-2000)/400+1;
        else
            d=(year-2000)/4-(year-2000)/100+(year-2000)/400;
        dy=(year-2000)+d;
        /*该年1月1日到2000年1月1日的星期差*/
            
        /*以上为月引起的星期差和年引起的星期差,还有一个2月份所引起的星期差。
          2月份所引起的星期差,需要先判断该年是否为闰年。
          若是闰年,则二月份所引起的星期差为1;
          若不是闰年,则二月份所引起的星期差为0.
           实现代码如下:*/

        if((year%4==0 && year%100!=0)||(year%100==0 && year%400==0))
            m2=1;
        else
            m2=0;





    la_100:                                /* **该月以前的月所引起的“星期差”** */
        switch(month)
        {
        case 1:dm=0;                    /* month在此存放该月天数 */
               month=31;
               break;
        case 2:dm=3;
               month=d==1?29:28;
               break;
        case 3:dm=3+m2;
               month=31;
               break;
        case 4:dm=6+m2;
               month=30;
               break;
        case 5:dm=1+m2;
               month=31;
               break;
        case 6:dm=4+m2;
               month=30;
               break;
        case 7:dm=6+m2;
               month=31;
               break;
        case 8:dm=2+m2;
               month=31;
               break;
        case 9:dm=5+m2;
               month=30;
               break;
        case 10:dm=m2;
                month=31;
                break;
        case 11:dm=3+m2;
                month=30;
                break;
        case 12:dm=5+m2;
                month=31;
                break;
        }


        if (day<0||day>month)
        {
            printf ("\n ERROR! the entered DAY is invalid\n");
            exit (0);
        }
        
        /*在是吸纳计算星期几模块的过程中首先需要对判定这个日期时星期几而进行公式计算,
          即使该日期所对应的这个月的天数加上这个月之前的月引起的星期差和该年1月1日到2000年1月1日所引起的星期差减1再加6对7取余。
          相应代码如下*/


        week=(dy+dm+day-1+6)%7;
        if(week<0)
            week=week+7;

        /*然后对计算出来的week值进行类型判断,若为0,则将“SUNDAY”复制给WEEK参数
          相关代码如下*/

        if(day>0)            /*判定查看类型*/
        {
        switch(week)
            {
            case 0:strcpy(WEEK,"SUNDAY");
                   break;
            case 1:strcpy(WEEK,"MONDAY");
                   break;
            case 2:strcpy(WEEK,"TUESDAY");
                   break;
            case 3:strcpy(WEEK,"WEDNESDAY");
                   break;
            case 4:strcpy(WEEK,"THURSDAY");
                   break;
            case 5:strcpy(WEEK,"FRIDAY");
                   break;
            case 6:strcpy(WEEK,"SATURDAY");
                   break;
            }
            printf("\n this day is %s \(%d)\n\n OK!\n",WEEK,week);      /*输出提示信息*/
            
        }

        /*当传入的参数只输入到月份,未输入具体日期时,对该月所在的日历进行显示
            实现代码如下*/

        else
        {
        week=++week%7;
        printf("\n the calendar of this month sa following\n");
        printf("\n*****************************************\n");
        printf("SUN  MON  TUE  WEN  THU  FRI  STA\n");
        for(i=0;i<week;i++)
            printf("     ");
        for(i=1;i<=month;i++)                    /*输出该月的所有天数*/
            {
                printf(" %2d  ",i);   
                week++;
                if(week%7==0 && i!=month)
                    printf("\n");
            }
        printf("\n*****************************************\n");
        printf("\n OK \n");
        }
            


我用的微软C++  编译一直显示有一个error,但却又不显示在哪,,,,我用DEV-C++却能编译通过,这是什么问题??、

我电脑系统是win10 的,是不是微软C++不能在win10上运行???
        

}
搜索更多相关主题的帖子: include C语言 项目 
2016-12-01 17:20
yinzhaoyu
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-11-14
收藏
得分:0 
大家帮忙解答一下,谢谢各位哥哥姐姐了
2016-12-01 17:20
yinzhaoyu
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-11-14
收藏
得分:0 
尴尬呢..............没人........
2016-12-01 21:41
yinzhaoyu
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-11-14
收藏
得分:0 
回复 4楼 rjsp
恩恩,好的,谢谢指导,谢谢指导。

我以后会注意这些的,谢谢指导。
2016-12-02 17:18
yinzhaoyu
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-11-14
收藏
得分:0 
回复 5楼 wanglianyi1
恩恩,好的呢。   
我今天发现问题了,VC++6.0 在win10兼容性不好。我用Devc++弄好了。
你说的问题我以后
2016-12-02 17:22
yinzhaoyu
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-11-14
收藏
得分:0 
回复 4楼 rjsp
谢谢各位的批评,我一定会改正的,谢谢各位了
2016-12-02 17:22
快速回复:C语言书上提供的代码,但一直编译不过,大家帮忙看一下怎么回事
数据加载中...
 
   



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

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