2024年4月1日发(作者:澄本)
习题5
一、选择题:
1.在c#中new关键字的作用是( )。
A) 新建对象实例 B) 定义命名空间
C) 调用类 D) 引入命名空间
2.C#中MyClass 为一自定义类,其中有以下方法定义
public void Hello(){..}
使用以下语句创建了该类的对象,并使变量obj 引用该对象:
MyClass obj = new MyClass();
那么,如何访问类MyClass 的Hello 方法( )。
A) () B) obj::Hello()
C) () D) MyClass::Hello();
3.下面哪一个不是C#关键字 ( )。
A)true B) sizeof C)super
4.下列关于构造函数的描述正确的是( )。
A) 构造函数可以声明返回类型。
B) 构造函数不可以用private修饰
C) 构造函数必须与类名相同
D) 构造函数不能带参数
5.如果不带修饰符,C#中类成员被默认声明成( )。
A)public B)protected C) private
6、下列关于析构函数的描述中,错误的是( )。
A.析构函数的函数体都为空
B.析构函数是用来释放对象的
C.析构函数是系统自动调用的
D.析构函数名是不能随意取的
7.下列关于运算符new的描述中,错误的是( )。
A.它可以创建对象或变量
B.它可以创建对象数组或一般类型数组
C.用它创建对象或对象数组时要调用相应的构造函数
D.用它创建的对象可以不用t()来释放
8、下列关于this的描述中,错误的是( )。
A.this是一个由系统自动生成的指针
B.this指针是指向对象的
C.this指针在用对象引用成员函数时系统创建的
D.this指针只能隐含使用,不能显式使用
二、分析下列程序的输出结果
1、
#include
using namespace std;
class M
D) void
D)static
{ int a;
public M() { a=0; }
public M(int i) { a=i; ine("init a");}
public int getA() { return a;}
}
void main()
{
M r1=new M();
M r2=new M(18);
ine(());
ine(());
}
答案:init a
0
18
2.
class DateClass
{ int year,month,day;
public DateClass(int y, int m, int d)
{
year=y;
month=m;
day=d;
}
public void Print()
{
ine(year + "/" + month + "/" + day);
}
}
void main()
{
DateClass d1 = new DateClass(2016, 10, 1);
DateClass d2 = new DateClass(2016, 12, 9);
();
();
}
答案:2016/10/1
2016/12/9
3、
class ClassA
{
private int a;
public int A
{
get { return a; }
set { a = value; }
}
public ClassA() { a=0; }
public ClassA(int i) { a = i; }
}
void main()
{
ClassA d = new ClassA(6);
}
(d.A);
答案: 6
三
、编程题:
按下列要求编程:
(1)定义一个描述矩形的类Rectangle,包括的数据成员有宽(width)和长(length);
(2)计算矩形周长;
(3)计算矩形面积;
(4)改变矩形大小。
通过实例验证其正确性。
答:编程如下:
class Rectangle
{ int width,length;
public Rectangle(int a,int b)
{ width=a; length=b; }
public int Area()
{ return width*length; }
public int Circle()
{ return 2*(width+length); }
public void Changesize(int a,int b)
{ width=a; length=b; }
public void Print()
{
ine("面积=" + Area());
ine("周长=" + Circle());
}
}
void main()
{
Rectangle r=new Rectangle(5,8);
();
size(3,9);
();
}
2、编一个关于求多个某门功课总分和平均分的程序。具体要求如下:
(1)每个学生信息包括姓名和某门功课成绩。
(2)假设5个学生。
(3)使用静态成员计算5个学生的总成绩和平均分。
答:编程如下:
class Student
{
string name;
int grade;
static int total=0;
public Student(string s,int gr)
{ name=s;
grade=gr;
total+=gr;
}
public static void Print()
{ ine("总成绩为 "+total+",平均成绩为 "+total/5.0);
}
}
void main()
{
Student s1=new Student("ma",85);
Student s2=new Student("Wang",96);
Student s3=new Student("Li",82);
Student s4=new Student("lu",78);
Student s5=new Student("zhang",80);
();
}
2024年4月1日发(作者:澄本)
习题5
一、选择题:
1.在c#中new关键字的作用是( )。
A) 新建对象实例 B) 定义命名空间
C) 调用类 D) 引入命名空间
2.C#中MyClass 为一自定义类,其中有以下方法定义
public void Hello(){..}
使用以下语句创建了该类的对象,并使变量obj 引用该对象:
MyClass obj = new MyClass();
那么,如何访问类MyClass 的Hello 方法( )。
A) () B) obj::Hello()
C) () D) MyClass::Hello();
3.下面哪一个不是C#关键字 ( )。
A)true B) sizeof C)super
4.下列关于构造函数的描述正确的是( )。
A) 构造函数可以声明返回类型。
B) 构造函数不可以用private修饰
C) 构造函数必须与类名相同
D) 构造函数不能带参数
5.如果不带修饰符,C#中类成员被默认声明成( )。
A)public B)protected C) private
6、下列关于析构函数的描述中,错误的是( )。
A.析构函数的函数体都为空
B.析构函数是用来释放对象的
C.析构函数是系统自动调用的
D.析构函数名是不能随意取的
7.下列关于运算符new的描述中,错误的是( )。
A.它可以创建对象或变量
B.它可以创建对象数组或一般类型数组
C.用它创建对象或对象数组时要调用相应的构造函数
D.用它创建的对象可以不用t()来释放
8、下列关于this的描述中,错误的是( )。
A.this是一个由系统自动生成的指针
B.this指针是指向对象的
C.this指针在用对象引用成员函数时系统创建的
D.this指针只能隐含使用,不能显式使用
二、分析下列程序的输出结果
1、
#include
using namespace std;
class M
D) void
D)static
{ int a;
public M() { a=0; }
public M(int i) { a=i; ine("init a");}
public int getA() { return a;}
}
void main()
{
M r1=new M();
M r2=new M(18);
ine(());
ine(());
}
答案:init a
0
18
2.
class DateClass
{ int year,month,day;
public DateClass(int y, int m, int d)
{
year=y;
month=m;
day=d;
}
public void Print()
{
ine(year + "/" + month + "/" + day);
}
}
void main()
{
DateClass d1 = new DateClass(2016, 10, 1);
DateClass d2 = new DateClass(2016, 12, 9);
();
();
}
答案:2016/10/1
2016/12/9
3、
class ClassA
{
private int a;
public int A
{
get { return a; }
set { a = value; }
}
public ClassA() { a=0; }
public ClassA(int i) { a = i; }
}
void main()
{
ClassA d = new ClassA(6);
}
(d.A);
答案: 6
三
、编程题:
按下列要求编程:
(1)定义一个描述矩形的类Rectangle,包括的数据成员有宽(width)和长(length);
(2)计算矩形周长;
(3)计算矩形面积;
(4)改变矩形大小。
通过实例验证其正确性。
答:编程如下:
class Rectangle
{ int width,length;
public Rectangle(int a,int b)
{ width=a; length=b; }
public int Area()
{ return width*length; }
public int Circle()
{ return 2*(width+length); }
public void Changesize(int a,int b)
{ width=a; length=b; }
public void Print()
{
ine("面积=" + Area());
ine("周长=" + Circle());
}
}
void main()
{
Rectangle r=new Rectangle(5,8);
();
size(3,9);
();
}
2、编一个关于求多个某门功课总分和平均分的程序。具体要求如下:
(1)每个学生信息包括姓名和某门功课成绩。
(2)假设5个学生。
(3)使用静态成员计算5个学生的总成绩和平均分。
答:编程如下:
class Student
{
string name;
int grade;
static int total=0;
public Student(string s,int gr)
{ name=s;
grade=gr;
total+=gr;
}
public static void Print()
{ ine("总成绩为 "+total+",平均成绩为 "+total/5.0);
}
}
void main()
{
Student s1=new Student("ma",85);
Student s2=new Student("Wang",96);
Student s3=new Student("Li",82);
Student s4=new Student("lu",78);
Student s5=new Student("zhang",80);
();
}