注册 登录
编程论坛 C++教室

[求助]又麻烦一下大家,一个小问题

a8451727 发布于 2007-06-07 21:00, 2192 次点击
我想定义一个年份:int year;
然后:cin>>year;//1998
最后我想抽取世纪数以及年份数,该怎样做?
例如:在上面分别提取19世纪和98年。
20 回复
#2
knm1102007-06-07 21:38
int year,shiji,nianfen;
cin>>year;
shiji=year/100;
nianfen=year-shiji*100;
我也不知道对不对 我是这么想的 希望可以帮到你
#3
yuyunliuhen2007-06-07 22:09
LS okok!^_^
#4
a84517272007-06-07 22:29
学着学着就糊涂了,原来这样```。
年份那也可以year%100;晕死。
#5
a84517272007-06-07 22:32

还请教一下,下面错在哪?

#include <iostream>
#include <string>
using namespace std;

class Month
{
public:
Month(){};
Month(string month,int day,int year);
string getMonth()const;
int getDay()const;
int getYear()const;

private:
string TheMonth;
int TheDay,
TheYear;
};
Month::Month(string month,int day,int year)
{
string TheMonth=month;
int TheDay=day,
TheYear=year;
}

inline string Month::getMonth()const
{
if (TheMonth=="March")
return 1;
else if(TheMonth=="April")
return 2;
else if(TheMonth=="May")
return 3;
else if(TheMonth=="June")
return 4;
else if(TheMonth=="July")
return 5;
else if(TheMonth=="August")
return 6;
else if(TheMonth=="September")
return 7;
else if(TheMonth=="October")
return 8;
else if(TheMonth=="November")
return 9;
else if(TheMonth=="DeceMber")
return 10;
else if(TheMonth=="January")
return 11;
else if(TheMonth=="February")
return 12;
}

错误信息:error C2664: '__thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(co
nst class std::allocator<char> &)' : cannot convert parameter 1 from 'const int' to 'const class std::allocator<char> &'
Reason: cannot convert from 'const int' to 'const class std::allocator<char>'
No constructor could take the source type, or constructor overload resolution was ambiguous

#6
aipb20072007-06-07 22:43
返回类型啊

return的int,怎么又string?
呵呵~
#7
a84517272007-06-07 22:55

郁闷死了。太粗心了。
谢谢啦

#8
a84517272007-06-07 23:30

很郁闷,又有点小问题了,帮忙找下 呵呵。
类文件:
#include <iostream>
#include <string>
using namespace std;

class Month
{
public:
Month(){};
Month(string month,int day,int year);
int getMonth()const;
int getDay()const;
int getYear()const;
int YearMonthDay()const;
void print(ostream& out)const;

private:
string TheMonth;
int TheDay,
TheYear;
};
Month::Month(string month,int day,int year)
{
string TheMonth=month;
int TheDay=day,
TheYear=year;
}

inline int Month::getMonth()const
{
if (TheMonth=="March")
return 1;
else if(TheMonth=="April")
return 2;
else if(TheMonth=="May")
return 3;
else if(TheMonth=="June")
return 4;
else if(TheMonth=="July")
return 5;
else if(TheMonth=="August")
return 6;
else if(TheMonth=="September")
return 7;
else if(TheMonth=="October")
return 8;
else if(TheMonth=="November")
return 9;
else if(TheMonth=="DeceMber")
return 10;
else if(TheMonth=="January")
return 11;
else if(TheMonth=="February")
return 12;
}

inline int Month::getDay()const
{
return TheDay;
}

inline int Month::getYear()const
{
return TheYear;
}

inline int Month::YearMonthDay()const
{
return getYear()+' '
+getMonth()+' '
+getDay();
}

inline void Month::print(ostream& out)const
{
cout<< getYear()+' '
+getMonth()+' '
+getDay();
}

/*****************************/
驱动程序:
#include<iostream>
#include<string>
#include"Month.h"
using namespace std;
void main()
{
Month year("May",23,1998);
cout <<year.YearMonthDay <<endl;
}

/**************************/
警告信息:
D:\学习软件\c++1\MSDev98\MyProjects\类深入\类.cpp(8) : warning C4761: integral size mismatch in argument; conversion supplied
d:\学习软件\c++1\msdev98\myprojects\类深入\month.h(54) : warning C4715: 'Month::getMonth' : not all control paths return a value
Linking...
/********************************/
为什么我的驱动程序怎样改,最后结果都是:1

#9
wfpb2007-06-07 23:58
价格括号。。。year.YearMonthDay()
#10
wfpb2007-06-08 00:00
Month::getMonth()
最后加一个else return 0;
#11
a84517272007-06-08 00:10
运行结果只有一个负数?不解。。。
难道一开始就错了?
#12
aipb20072007-06-08 09:43
Month::Month(string month,int day,int year)
{
TheMonth=month;
TheDay=day;
TheYear=year;
}
#13
aipb20072007-06-08 09:44
inline int Month::YearMonthDay()const
{
return getYear()+' '
+getMonth()+' '
+getDay();
}
用整数去加 ‘ ’得到什么?
#14
a84517272007-06-08 12:25

很晕。
以前用字符串这可以的,不知道数字不可以。
那我该怎样做,才可以得到我想要的结果?
也就是运行后,得到year month day //1998 5 20

#15
tancui2007-06-08 12:53
看着就不爽啊
这样写
enum { January=1,...}
#16
aipb20072007-06-08 13:32
以下是引用a8451727在2007-6-8 12:25:42的发言:

很晕。
以前用字符串这可以的,不知道数字不可以。
那我该怎样做,才可以得到我想要的结果?
也就是运行后,得到year month day //1998 5 20

你不是有个print的函数吗?就那样就行 啊!

#17
a84517272007-06-08 13:32
回复:(tancui)看着就不爽啊这样写enum { January=1...
嘿嘿,有好方法教下啊。
我还没学到你说的那个吧。
谢谢指点,我去试下

写完整点好吗没见过enum这家伙呢```应该也像switch吧

[此贴子已经被作者于2007-6-8 13:43:23编辑过]

#18
a84517272007-06-08 13:36
终于弄明白了
谢谢各位的帮助
#19
a84517272007-06-08 14:54
回复:(tancui)看着就不爽啊这样写enum { January=1...
教我用那方法
#20
neverDie2007-06-08 17:27
enum是枚举,意思是枚举出一个类型,你直接使用,枚举中每个量有标记,默认从0开始!
#21
a84517272007-06-08 21:02

晕,我翻了下书,枚举还没学到,谢谢大家啦呵呵。

1