当前位置:文档之家› 数据库第六章习题答案

数据库第六章习题答案

第六章习题答案一、选择填空1、A2、C3、D4、B5、D6、A7、C8、A9、D 10、A11、C 12、A 13、B 14、C 15、C 16、D 17、B 18、C 19、A 20、D21、C 22、B二、判断下列描述的正确性,对者划√,错者划×。

1、√2、×3、×4、×5、√6、√7、×8、√9、×10、√11、√12、√13、√14、√15、×16、√17、√18、√19、√20、×21、×22、×三、分析下列程序的输出结果。

1、运行该程序输出结果如下所示。

Default constructor calledConstructor calleda=0,b=0a=4,b=82、运行该程序输出结果如下所示。

a=7,b=93、运行该程序输出结果如下所示。

1044、运行该程序输出结果如下所示。

1035,789.5045、运行该程序输出结果如下所示。

1{}{0,1,2,3,4,5,6,7,8}1{11,12,13,14,15,16,17,18,19}{19,18,17,16,15,14,13,12,11}6、运行该程序输出结果如下所示。

Starting1:Default constructor called.Default constructor called.Default constructor called.Eding1:Starting2:Constructor: a=5,b=6Constructor: a=7,b=8Constructor: a=9,b=10Ending2:Destructor called.a=9,b=10Destructor called.a=7,b=8Destructor called.a=5,b=6Destructor called.a=5,b=6Destructor called.a=3,b=4Destructor called.a=1,b=27、运行该程序输出结果如下所示。

Default constructor called.Default constructor called.Default constructor called.Default constructor called.Destructor called.Constructor1 called.Destructor called.Constructor2 called.Destructor called.x=0,y=0x=5,y=0x=2,y=3Destructor called.Destructor called.Destructor called.8、运行该程序输出结果如下所示。

Constructor called.0Constructor called.5Destructor called.55Destructor called.59、运行该程序输出结果如下所示。

Constructor called.55Destructor called.510、运行该程序输出结果如下所示。

Default Constructor called.Constructor:real=6.8,imag=0Constructor:real=5.6,imag=7.90+0I6.8+0I5.6+7.9IConstructor:real=1.2,imag=3.4Constructor:real=5,imag=0Default Constructor called.1.2+3.4I5+0I0+0I11、答:⑴该程序中用string.h中所包含的函数有3种,它们是strcpy( )、strcat( )和strlen( ).⑵该程序中使用了函数重载。

它们是下述两个构造函数重载:String( )和String(const char * str)。

⑶类中成员函数Setc( )的功能是用来设置字符数组中某位置的一个指定字符。

⑷类中成员函数Getc( )的功能是用来从某个字符数组中获取指定位置的字符。

⑸类中成员函数Append( )的功能是在一个字符数组中追加一个指定的字符串,即将指定的字符串添加到已知串的后边。

⑹不行。

⑺该程序中有两处使用了new运算符。

⑻运行该程序输出结果如下所示。

empty.a string.9a string.ithis a string.四、改正以下程序中的错误。

1、该程序中point类的构造函数定义不正确,在main()中队数据成员的访问不正确,修改如下:#include <iostream.h>class point{int x1,x2;public:point(int x,int y){point::x=x;point::y=y;}void disp(){cout<<x1<<endl;cout<<x2<<endl;}//……};void main(){point data(5,5);data.disp();}2、在main()函数中的p.x+=5和p.y+=6两个语句是错误的,因为保护数据仅能被类的成员函数访问。

五、按下列要求编写程序。

1、程序内容如下所示。

#include <iostream.h>class Test{public:Test(){}Test(int i,int j=20){t1=i;t2=j;t+=j-i;}static int fun(Test&T);friend int add(Test&T); private:int t1,t2;static int t;};int Test::fun(Test&T){t+=T.t;return t;}int add(Test&T){int n=T.t1+T.t2;return n;}int Test::t=5;void main(){Test a1,a2(10),a3(15,25);cout<<add(a2)<<endl;cout<<Test::fun(a2)<<endl;}2、程序内容如下所示。

#include <iostream.h>#include <string.h>class Product{char *name;int price;int quantity;public:Product(char *n,int p,int q){name =new char[strlen(n)+1];strcpy(name,n);price=p;quantity=q;}{if(name){delete [] name;name=0;}}void buy(int money){int n,r;n=money/price;if(n>quantity)cout<<"数量不够"<<endl;else{quantity-=n;r=money%price;cout<<"产品:"<<name<<"单价:"<<price<<"元顾客";cout<<money<<"元,买了"<<n<<"台,剩余"<<r<<"元"<<endl;}}void get() const{cout<<"产品:"<<name<<"单价:"<<price<<"元剩余"<<quantity<<"台"<<endl; }};void main(){Product p1("电视机",2000,15);p1.buy(7000);p1.get();p1.buy(4500);p1.get();}3、程序内容如下所示。

#include <iostream.h>#include <stdlib.h>class CDate{private:int m_nDay;int m_nMonth;int m_nYear;CDate();CDate(int day,int month,int year);void Display();void AddDay();void SetDate(int day,int month,int year);~CDate();private:bool IsLeapYear(); //判断该年是否为闰年};CDate::CDate(){}CDate::CDate(int day,int month,int year){m_nDay=day;m_nMonth=month;m_nYear=year;}void CDate::Display(){char day[5];char month[5];char year[5];_itoa(m_nDay,day,10);_itoa(m_nMonth,month,10);_itoa(m_nYear,year,10);cout<<day<<"/"<<month<<"/"<<year<<endl; }void CDate::AddDay(){m_nDay++;if (IsLeapYear()){if((m_nMonth==2)&&(m_nDay==30)){m_nMonth++;m_nDay=1;return;}}else{if((m_nMonth==2)&&(m_nDay==29))m_nMonth++;m_nDay=1;return;}}if(m_nDay>31){if(m_nMonth==12){m_nYear++;m_nMonth=1;m_nDay=1;}else{m_nMonth++;m_nDay=1;}}}void CDate::SetDate(int day,int month,int year) {m_nDay=day;m_nMonth=month;m_nYear=year;}CDate::~CDate(){}bool CDate::IsLeapYear(){bool bLeap;if (m_nYear%4!=0)bLeap=false;else if(m_nYear%100!=0)bLeap=true;else if(m_nYear%400!=0)bLeap=false;elsebLeap=true;return bLeap;}void main()CDate d;d.SetDate(2001,2,28);cout<<"当前日期=>:";d.Display();d.AddDay();cout<<"当前日期加1=>:";d.Display();}4、程序内容如下所示。

相关主题