《C%2B%2B数组与指针习题》 联系客服

发布时间 : 星期三 文章《C%2B%2B数组与指针习题》更新完毕开始阅读1efc0cd233d4b14e85246870

数组与指针习题 9

return string; }

char *itoa1 (int n,char *string){

if(n/10) string=itoa1(n/10,string);//隐式循环

*string++=n+48;//第一次是数字最高位放串的最前面的字符(不含符号),注意指针移动在后

*string='\\0';

return string;//注意返回的指针已后移一字符 }

char *itoa0 (int n,char *string){ if(n<0){

*string++='-'; n=-n; }

itoa1(n,string); return string; }

void main(){ int num; char st[20]; cin>>num;

cout<>num;

cout<

5.10 头文件中定义一个日期时间的结构:

struct tm{ int tm_sec; //秒 int tm_min; //分 int tm_hour; //时 int tm_mday; //日 int tm_mon; //月 int tm_year; //年,实际放的是与1970年的差,如1990年为20 int tm_wday; //星期 int tm_yday; //一年中的第几天 int tm_isdst; //是否夏时制 };

函数 time_t time(time_t *tp)是提取当前时间,time_t即长整型,代表从1970年1月1日00:00:00开始计算的秒数(格林尼治时间),放在首地址为tp的单元内。

函数 tm *localtime(const time_t *tp) 将tp地址单元中的时间转换为日期时间结构的当地时间;(函数 tm *gmtime(const time_t *tp)转换为日期时间结构的格林尼治时间;) 函数 char *asctime(tm *tb)将tb地址单元中的tm结构的日期时间转换为字符串(供显示),它有固有格式,如:

数组与指针习题 10

Sun Sep 16 01:03:52 1973

利用以上资源,重新设计一个日期时间类(DataTime),要求定义对象时取当前时间进行初始化,显示时重取显示时刻的时间并显示出来。 解:

#include #include class datatime{ tm *timedata; long allsecond; char *tmp; public:

datatime(){

time(&allsecond);

timedata=localtime(&allsecond); tmp=asctime(timedata); cout<

void gettime(){

allsecond=time(NULL);//time有两种用法 timedata=localtime(&allsecond); tmp=asctime(timedata); cout<

void main(){ char ch; datatime dt;

cout<<\需要知道现在的日期和时间吗?(Y或N)\ cin>>ch;

if(ch=='y'||'Y') dt.gettime(); }

5.11 完善自定义字符串类mystring,函数包括:构造函数、拷贝构造函数、析构函数,并

重载运算符[ ],=(分别用mystring和C字符串拷贝),+(strcat),+=,<,==(strcmp)。 解: 此例既是对第5章的复习也是一个提高。拷贝构造函数的应用请参阅4.4.2节末尾两项说明,本例形参使用引用,仅在返回时调用了拷贝构造函数。运算符的重载请参阅4.5节。 #include const int n=256; class mystring{ char string[n]; int maxsize; int last; public:

mystring(){

数组与指针习题 11

};

mystring mystring::operator=(mystring & ms){ last=-1; do{

last++;

string[last]=ms.string[last]; }while(last

last=-1; maxsize=n;

string[0]='\\0';

cout<<\缺省构造函数\}

mystring(char *s){//本例为了简化,健壮性并不好 last=-1; maxsize=n; do{

last++;

string[last]=s[last]; }while(s[last]!='\\0'); cout<<\构造函数\}

mystring(mystring & ms){ last=-1; maxsize=n; do{

last++;

string[last]=ms.string[last]; }while(last

cout<<\拷贝构造函数\}

~mystring(){

cout<<\析构函数\}

void show(){

//如需重载<<,则请参见9.3节,暂时未学到,替代的方法是改用一个show()函数 cout<

mystring operator=(mystring &); mystring operator+(mystring &); mystring operator+=(mystring &); bool operator<(mystring &); bool operator==(mystring &);

数组与指针习题 12

mystring mystring::operator+(mystring & ms){//注意+和+=的不同 mystring temp(*this); int i=-1;

temp.last--;//串的结尾是结束符,连接时要覆盖掉 do{

temp.last++; i++;

temp.string[temp.last]=ms.string[i]; }while(i

mystring mystring::operator+=(mystring & ms){ int i=-1;

last--;//串的结尾是结束符,连接时要覆盖掉 do{

last++; i++;

string[last]=ms.string[i]; }while(i

bool mystring::operator<(mystring & ms){ int i=0,k; do{

k=string[i]-ms.string[i]; i++;

}while(k==0&&i

if(i==last&&i!=ms.last) return true; return false; }

bool mystring::operator==(mystring & ms){ int i=0,k;

if(last!=ms.last) return false; do{

k=string[i]-ms.string[i]; i++;

}while(k==0&&i

void main(){

char *sp1=\东南大学\交通学院\学生\