面向对象程序设计 C++ 山师 第七章习题答案
时间:2026-01-16
时间:2026-01-16
面向对象程序设计以及 单片机原理及其接口技术答案
第七章习题答案
一、选择填空
1、D 2、A 3、B 4、C 5、A 6、C 7、B 8、D 9、
二、判断下列描述的正确性,对者划√,错者划×。
1、√ 2、× 3、× 4、× 5、√ 6、× 7、√ 8、√ 9、√ 10、×
11、√ 12、√ 13、× 14、√ 15、√ 16、× 17、√ 18、√
三、分析下列程序的输出结果。
1、
(1)上述结构的DAG图如下所示。
(2)无二义性
(3)无二义性
2、(1)无 (2无 (3)有 (4)无 (5)有
四、分析下列程序的输出结果
1、运行该程序输出如下结果。
(1,2)
5,6
(6,9)
2、该程序的输出结果如下所示
(1,2)
(6,9)
5,6
(6,9)
3、该程序的输出结果如下:
(13,22,30,40)
4、运行该程序输出结果如下所示。
D2::display()
pri1=4,pri2=5
pri4=6
pri12=7
D2::display()
pri1=12 ,pri2=9
面向对象程序设计以及 单片机原理及其接口技术答案
pri4=7
pri12=8
5、该程序输出结果如下所示:
D2::display()
pri1=1,pri2=4
pri4=6
pri12=7
D2::display()
pri1=9,pri2=8
pri4=7
pri12=8
6、该程序输出结果如下所示:
base class
base class
base class
derive1 class
derive2 class
五、按下列要求编写程序。
1、程序内容如下所示。
#include <iostream.h>
#include <iomanip.h>
class person
{
int no;
char name[10];
public:
void input()
{
cout<<" 编号:";cin>>no;
cout<<" 姓名:";cin>>name;
}
void disp()
{
cout<<" 编号:"<<no<<endl;
cout<<" 姓名:"<<name<<endl;
}
};
class student:public person
{
private:
char depart[6];
int degree;
public:
面向对象程序设计以及 单片机原理及其接口技术答案
{
person::input();
cout<<" 班号:"; cin>>depart;
cout<<" 成绩:"; cin>>degree;
}
void disp()
{
person::disp();
cout<<" 班号:"<<depart<<endl;
cout<<" 成绩:"<<degree<<endl;
}
};
class teacher:public person
{
private:
char prof[10];
char depart[10];
public:
void input()
{
person::input();
cout<<" 职称:"; cin>>prof;
cout<<" 部门:"; cin>> depart ;
}
void disp()
{
person::disp();
cout<<" 职称:"<< prof<<endl;
cout<<" 部门:"<< depart <<endl;
}
};
void main()
{
student s1;
teacher t1;
cout<<"输入一个学生数据:\n"; s1.input();
cout<<"输入一个教师数据:\n"; t1.input();
cout<<"显示一个学生数据:\n"; s1.disp();
cout<<"显示一个教师数据:\n"; t1.disp();
}
2、程序内容如下所示。
#include <iostream.h>
#include <string.h>
面向对象程序设计以及 单片机原理及其接口技术答案
{
int length;
char *contents;
public:
int get_length(){return length;}
char *get_contents(){return contents;}
~string(){delete contents;}
int set_contents(int in_length,char *in_contents);
int set_contents(char *in_contents);
void print(){cout<<contents<<endl;}
};
class edit_string:public string
{
int cursor;
public:
int get_cursor_pos(){return cursor;}
void move_cursor(int how_much){cursor=how_much;}
int add_at_cursor(string *new_text);
int repl_at_cursor(string *new_text);
void dele_at_cursor(int how_much);
};
int string::set_contents(int in_length,char *in_contents)
{
length=in_length;
if (!contents) delete contents;
contents=new char[length+1];
strcpy(contents,in_contents);
return length;
}
int string::set_contents(char *in_contents)
{
length=strlen(in_contents);
if (!contents) delete contents;
contents=new char[length+1];
strcpy(contents,in_contents);
return length;
}
int edit_string::add_at_cursor(string *new_text)
{
int n,k,m;
char *cp,*pt;
n=new_text->get_length();
pt=new_text->get_contents();
面向对象程序设计以及 单片机原理及其接口技术答案
cp=this->get_contents();
m=this->get_length();
char *news=new char[m+n+1];
for (int i=0;i<cursor;i++)
news[i]=cp[i];
k=i;
for (int j=0;j<n;i++,j++)
news[i]=pt[j];
cursor=i;
for(j=k;j<m;j++,i++)
news[i]=cp[j];
news[i]='\0';
set_contents(news);
delete news;
return cursor;
}
int edit_string::repl_at_cursor(string *new_text)
{
int n,m;
char *pt,*news;
n=new_text->get_length();
pt=new_text->get_contents();
m=this->get_length();
news=new char[m>n+cursor ? m+1 : n+cursor+1];
news=this->get_contents();
for(int i=cursor,j=0;i<n+cursor;j++,i++)
news[i]=pt[j];
if (m<n+cursor) news[i]='\0';
cursor=i;
set_contents(n …… 此处隐藏:4746字,全部文档内容请下载后查看。喜欢就下载吧 ……