免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7648 | 回复: 5
打印 上一主题 下一主题

高手帮我找一下错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-21 19:20 |只看该作者 |倒序浏览
一个输出日期,星期的代码:
#include <iomanip.h>


class Day
{
    private:
                int year;//保存年份
                int month;
                int nday;
                int xqday;//星期
                bool yleap;//是否闰年
                int nlyears;//2006年至year的闰年年数
                int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
                char* b[7]={"天","一","二","三","四","五","六"};

        public:
                Day(int);
                void addday();
                void dayout();
                bool leapyear();
                int getnlyears();
                int getxqday();
};



Day:ay(int ny)
{
        year=ny;
        yleap=leapyear();
        nlyears=getnlyears();
        month=1;
        nday=1;
        xqday=getxqday();
}




bool Day::leapyear()
{
        if((year%4==0 && year%100!=0) || (year%400==0))
        {
                return true;
        }
        else
                return false;
}




int Day::getnlyears()
{
        if(year>2006)
        {
                return (year\4-year\100+year\400)-(2006\4-2006\100+2006\400)-yleap;
        }
        else if(year<2006)
        {
                return (2006\4-2006\100+2006\400)-(year\4-year\100+year\400)+yleap;
        }
        else
                return 0;
}




int Day::getxqday()
{
        int commonyear;
        int temp;
        if(year>2006)
        {
                commonyear=year-2006-nlyears;
                temp=(commonyear+2*nlyears)%7;
                return temp;
        }
        else if(year<2006)
        {
                commonyear=2006-year-nlyears;
                temp=-(commonyear+2*nlyears)%7+7;
                return temp;
        }
        else
                return 0;
}



void Day::addday()
{
        nday++;
        if(month!=2)
        {
                if(nday>a[month])
                {
                        nday=1;
                        month++;
                        if(month>12)
                        {
                                month=1;
                                year++;
                        }
                }
        }
        else if(nday>(28+yleap))
        {
                nday=1;
                month=3;
        }
       
}




void Day::dayout()
{
        int tempmonth;//用于打印一个月
        int ntemp;
        ntemp=xqday+1;
        int flag;


        cout<<year<<"年日历:"<<endl;
        cout.setf(ios::right);
        for(int i=1;i<=12;i++)
        {
                flag=1;
                cout<<i<<"月份:"<<endl;
                for(int j=0;j<=6;j++)
                {
                        cout.width(;
                        cout<<"星期"<<b[j];
                }
                cout<<endl;

        tempmonth=month;
                while(tempmonth==month)
                {
                        if(flag==1)
                        {
                                cout.width(ntemp*;
                                flag=0;
                        }
                        else
                                cout.width(;
                        cout<<nday;
                        addday();
                        ntemp++;
                        if(ntemp>7)
                        {
                                ntemp=1;
                                cout<<endl;
                        }
                        if(tempmonth!=month)
                                cout<<endl;
                }
        }
}

[ 本帖最后由 aux888 于 2006-4-21 19:23 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-04-21 19:21 |只看该作者
#include <iostream>
#include "day.h"
using namespace std;
int main()
{
        int y;
        cin>>y;
        Day a(y);
        a.dayout();
        return 0;
}

论坛徽章:
0
3 [报告]
发表于 2006-04-21 19:22 |只看该作者
链接时的提示:
Compiling...
day.cpp
f:\c\rili\day.h(13) : error C2059: syntax error : '{'
f:\c\rili\day.h(13) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
f:\c\rili\day.h(14) : error C2059: syntax error : '{'
f:\c\rili\day.h(14) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
f:\c\rili\day.h(57) : error C2017: illegal escape sequence
f:\c\rili\day.h(57) : error C2143: syntax error : missing ')' before 'constant'
f:\c\rili\day.h(57) : error C2017: illegal escape sequence
f:\c\rili\day.h(57) : error C2017: illegal escape sequence
f:\c\rili\day.h(57) : error C2059: syntax error : ')'
f:\c\rili\day.h(57) : error C2017: illegal escape sequence
f:\c\rili\day.h(57) : error C2017: illegal escape sequence
f:\c\rili\day.h(57) : error C2017: illegal escape sequence
f:\c\rili\day.h(61) : error C2017: illegal escape sequence
f:\c\rili\day.h(61) : error C2143: syntax error : missing ')' before 'constant'
f:\c\rili\day.h(61) : error C2017: illegal escape sequence
f:\c\rili\day.h(61) : error C2017: illegal escape sequence
f:\c\rili\day.h(61) : error C2059: syntax error : ')'
f:\c\rili\day.h(61) : error C2017: illegal escape sequence
f:\c\rili\day.h(61) : error C2017: illegal escape sequence
f:\c\rili\day.h(61) : error C2017: illegal escape sequence
f:\c\rili\day.h(97) : error C2065: 'a' : undeclared identifier
f:\c\rili\day.h(97) : error C2109: subscript requires array or pointer type
f:\c\rili\day.h(136) : error C2065: 'b' : undeclared identifier
f:\c\rili\day.h(136) : error C2109: subscript requires array or pointer type
f:\c\rili\day.cpp(7) : error C2872: 'cin' : ambiguous symbol
Error executing cl.exe.



Results
day.obj - 25 error(s), 0 warning(s)

论坛徽章:
0
4 [报告]
发表于 2006-04-21 19:46 |只看该作者
首先声明偶是菜鸟

20行以前的错误是你定义 private成员时引起的错误
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char* b[7]={"天","一","二","三","四","五","六"};

这种是不能直接赋值的!
其实主要错误就是这里,我把这两句声明为全局的时候就基本上可以运行了

论坛徽章:
0
5 [报告]
发表于 2006-04-21 19:50 |只看该作者
最后一句错误说cin  ambiguous symbol

这是因为你在头文件包含的时候出错引起
在day.h文件里,你用的是#include <iomanip.h>这种格式

然而你又在  main  程序里用了 using namespace std;

自然出错

论坛徽章:
0
6 [报告]
发表于 2006-04-22 01:42 |只看该作者
“aux_88”写这么长的代码实现输出日期和星期的代码;
如果自己练习没什么关系,如果是实现输出日期和星期功能
只要使用本地时间tm结构就可以了,不需要写那么多代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP