在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1、在C#中,表示一个字符串的变量应使用以下哪条语句定义( )
A.CString str; B.string str; C.Dim str as string; D.char * str;
2、在C#编制的财务程序中,需要创建一个存储流动资金金额的临时变量,则应使用下列
哪条语句( )
A.decimal EMoney; B.int EMoney;
C.string EMoney; D.Dim EMoney as double;
3、关于如下程序结构的描述中,哪一项是正确的( )
for( ; ; )
{
循环体;
}
A. 一直执行循环体,即死循环 B. 执行循环体一次
C. 不执行循环体 D. 程序不符合语法要求
4、C#中每个int 类型的变量占用( )个字节的内存
A.1 B.2 C.4 D.8
5、C#中MyClass为一自定义类,其中有以下方法定义public void Hello(){…}使用以下语句创建了该类的对象,并使变量obj引用该对象MyClass obj = new MyClass();那么如何访问类MyClass的Hello方法( )
A. obj.Hello();
B. obj::Hello();
C. MyClass.Hello();
D. MyClass::Hello();
6、在类的定义中,类的( )描述了该类的对象的行为特征
A.类名 B.方法 C.所属的名字空间 D.私有域
7、以下哪段代码,最合理地实现了以下结构图描述的流程( )
A.if(x>=0) B.if(x>=0)
y=-x; y=x;
else else
y=x; y=-x;
C.while(x>=0) D.while(x>=0)
{ {
case true: y=x; case true: y=-x;
break; break;
case false: y=-x; case false: y=x;
break; break;
} }
8、分析下列程序中类MyClass的定义
class BaseClass
{
public int i;
}
class MyClass:BaseClass
{
public new int i;
}
则下列语句在Console上的输出为( )
MyClass y = new MyClass();
BaseClass x = y;
x.i = 100;
Console.WriteLine(“{0}, {1}”,x.i,y.i);
(提示:注意类MyClass 中的new关键字)
A. 0,0 B. 100,100 C. 0,100 D. 100,0
9、分析下列程序:
public class Demo
{
private string _sData = ““;
public string sData{set{_sData = value;}}
}
在Main函数中,创建该类的对象obj后,下列哪些语句是合法的( )
A.obj.sData = “It is funny!”;
B.Console.WriteLine(obj.sData) ;
C.obj.sData = 100;
D.obj.set(obj.sData);
10、在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成( )
A. sealed方法 B. public 方法 C. virtual 方法 D. override 方法
11、下列语句创建了多少个string对象?( )
string [,] strArray = new string[3,4];
A. 0 B.3 C.4 D.12
12、在C#中,下列哪些语句可以创建一个具有3个初始值为””的元素的字符串数组( )
A. string StrList[3]( ””);
B. string[3] StrList = {””, ””, ””};
C. string[] StrList = {””, ””, ””};
D. string[] StrList = new string [3];
13、在C#中设计类时,如何将一个可读可写的公有属性Name修改为只读属性( )
A. 将Name的set语句块删除
B. 将Name的set语句块置空
C. 将Name的set语句块前加修饰符private
D. 将Name添加readonly修饰符
14、下列函数定义中,哪条语句是非法的( )
void Test()
{
int I = 100; //第一句
object s = I; //第二句
int k = s; //第三句
k = (int)s; //第四句
}
A. 第一句 B. 第二句 C. 第三句 D. 第四句
15、接口Animal定义如下:
public interface Animal
{
void Move();
}
则下列抽象类的定义中,哪些是不合法的( )
A. abstract class Cat: Animal
{
Abstract public void Move();
}
B. abstract class Cat: Animal
{
public virtual void Move(){Console.Write(Console.Write(“Move!”);)}
}
C. abstract class Cat:Animal
{
public void Move(){Console.Write(Console.Write(“Move!”);)}
}
D. abstract class Cat:Animal
{
public void Eat(){Console.Write(Console.Write(“Eat!”);)}
}
二、多项选择题(本大题共10小题,每小题2分,共20分)
在每小题列出的四个备选项中有一个或者多个答案是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1、下列哪些语句中定义的变量属于引用类型变量( )
A. IInformation info; //IInformation 为一接口类型名
B. MyStruct x; //MyStruct 为一结构类型名
C. int[ ] arr;
D. MyEnum y ; //MyEnum 为已定义的枚举型名
2、在C#程序中,入口函数的正确声明为( )
A. static int Main(){……}
B. static void Main(){……}
C. static void main(){……}
D. static Main(){……}
3、设置int a=3,从以下选项中,选出变量result的值为true的表达式( )
A.bool result = (a++>=3);
B.bool result = (++a>3);
C.bool result = (~a==-4);
D.bool result = !(a++>3);
4、从下列选项中,选出变量result的返回值是false的表达式( )
A. bool result = (4==5); B. bool result = (1!=1);
C. bool result = (1==1); D. bool result = 0;
5、下列关于“方法重载”的描述中,哪些选项是正确的( )
A. 方法ConsoleW(int _value)是方法ConsoleW(string _value) 的重载
B. 构造函数不可以重载
C. 方法重载即“同样的方法名但传递的参数不同”
D. 方法重载可以扩充现有类的功能
6、switch( ) 语句中的控制表达式可以是下面哪几种类型( )
A.integer类型
B.char类型
C.string类型
D.enum类型
7、通常计算机程序是由若干条语句组成的,组成程序的常用结构分别是下列哪几种( )
A.顺序结构 B.分支结构 C.循环结构 D.跳转结构
8、在数组中,对于for和foreach语句,下列哪些选项中的说法正确的( )
A.foreach语句能使你不用索引就可以遍历整个数组
B.foreach 语句总是遍历整个数组
C.foreach 语句总是从索引1遍历到索引Length
D.如果需要修改数组元素就必须使用for语句
9、下列关于派生类和抽象类的描述中,哪个选项是错误的( )
A. 在C#中要在派生类中重新定义基类的虚函数必须在前面加override
B. 抽象类必须包含一个或多个抽象成员
C. 在C#中派生类可使用base修饰符访问基类的成员
D. 声明为abstract类的方法必须同时进行声明和实现
10、下述代码用于定义了一个接口,请选出错误的代码行( )
interface IFile
{
int A;
A.int delFile( )
B.{
C. A = 3;
D.}
void disFile( );
}
三、名词解释(本大题共5小题,每小题3分,共15分)
请用简短的语句对所给出的名词,进行简短的描述。
1、在C#编程中常用数据类型包括哪些?
2、简单的说明一下类中方法的声明包含哪几种情况?
3、举例说明一下什么是继承?
4、你认为派生类中能继承基类中的构造函数么?如果不能将如何在派生类中使用基类中的构造函数?
5、简单的描述一下什么是多态?
四、判断题(本大题共10小题,每小题1分,共10分)
请对每小题的描述进行判断,正确的括号中打”√ ”,错误的请在括号中打”×”。
1、属性就是实体的抽象,比如,对象猫可以有重量,身长等属性。( )
2、在C# 2005编程环境中,常量的值可以在代码中被修改。 ( )
3、如果基类没有默认的构造函数,那么其派生类构造函数必须通过base关键字来调用基类的构造函数。( )
4、C#中, 下列MyClass的定义是否正确合法? ( )
public class Base1{ }
public class Base2{ }
public MyClass:Base1,Base2{ }
5、下列类MyClass的Name属性定义是否正确 ( )
public abstract class Base
{
public abstract string Name{get;set;}
}
public class MyClass
{
string _msg;
public override string Name
{
get{ return _msg;}
}
}
6、abstract抽象类也能实例化。 ( )
7、在C#2005编程环境中,int类型变量的位数是16位。 ( )
8、类和对象的区别是:类是对象的实例,而对象则是类的抽象。 ( )
9、抽象方法在抽象类中被定义和实现,当派生类从抽象类中继承一个抽象方法时,派生类必须重写该抽象方法。 ( )
10、分析下面的代码段,最终的运行结果是Sun Mon Tue Wed Thu Fri Sat ( )
static void Main(string[] args)
{
string[] WeekDays = new string[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sta" };
PrintDay(WeekDays);
}
static void PrintDay(string[] array)
{
for (int i = 0; i < array.Length-1; i++)
{
Console.Write(array[i] + "{0}", i < array.Length - 1 ? " " : "");
}
Console.WriteLine();
}
五、编码题(本大题共4小题,每小题10分,共40分)
请使用C#语言给出每道题要求的完整代码,或者在空白处补充完整剩余的代码。
1、下列算法的功能是当控制台上输入一个字符串之后,检索字符串中的非零数字,并把这些数字相加。请完善该算法。(例如:当输入”a32Q5uhn4”,程序输出sResualt = 14)
static void Main(string[] args)
{
string inputString = null;
int sResualt = 0;
inputString = Console.ReadLine();
foreach (char chr in inputString)
{
if((1)_______________)
{
sResualt += Convert.ToInt32(chr.ToString());
}
}
if ((2)_______________)
{
Console.WriteLine("输入的字符串中没有数字!");
}
else
{
Console.WriteLine("sResualt={0}", sResualt);
}
Console.ReadLine();
}
2、下列算法的功能是求出a、b、c互不相等的数的最大数。请完善该算法。
static void Main(string[] args)
{
int a = Convert.ToInt32(Console.ReadLine());
int b = Convert.ToInt32(Console.ReadLine());
int c = Convert.ToInt32(Console.ReadLine());
if ((1)_______________)
{
if ((2)_______________)
{
Console.WriteLine("三个数的最大数为{0}", (3)_______________);
}
else
{
Console.WriteLine("三个数的最大数为{0}", (4)_______________);
}
}
else
{
if ((5)_______________)
{
Console.WriteLine("三个数的最大数为{0}", (6)_______________);
}
else
{
Console.WriteLine("三个数的最大数为{0}", (7)_______________);
}
}
Console.ReadLine();
}
3、请补全一个方法函数,当调用该方法时传入字符串数组参数StrArray,已知string[]StrArray = new string[] {“C#”, ”C++”, “VB”, “Java”},打印出结果为C++,VB,
方法函数基本结构如下:
public void Print(string[] strarray)
{
//请将该函数补充完整
}
4、请补全在Student类中重载Person类中的HappyBirthday方法函数,若当天是某人生日,打印出结果为”今天是****年**月**日,祝你生日快乐”。
public abstract class Person
{
private DateTime _birthday;
public DateTime Birthday
{
get { return _birthday; }
set { _birthday = value; }
}
public abstract void HappyBirthday();
}
public class Student : Person
{
//请将HappyBirthday方法函数补充完整
}
六、附加编码题(本大题共1小题, 20分)
本题为附加题,不做要求。要求给出完整的类型库、类型库的成员变量和成员方法,代码要求有合理注释,注意编码规范。
1、编写程序实现员工工资与福利管理系统中以下功能。
功能描述:
1)输入员工人数,并创建员工的姓名和对应的月收入数组。
2)分别向数组中添加员工的姓名和对应的月收入。
3)根据员工的月收入,计算出员工的年终奖金。(提示年薪=月收入*12)
当年薪小于等于50000元时,年终奖金=年薪*0.1;
当年薪大于50000元小于等于80000元时,年终奖金=年薪*0.15;
当年薪大于80000元小于等于100000元时,年终奖金=年薪*0.2;
当年薪大于100000元时,年终奖金=年薪*0.25;
4)打印出员工的姓名、月收入、年薪和年终奖金。