一、单项选择题(本大题共15小题,每小题1分,共15分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。(这题真不简单)
1、在C#中,表示一个字符串的变量应使用以下哪条语句定义( )
A.CString str; B.string str; C.Dim str as string; D.char * str;
2、请问经过表达式 a=3+1>5?0:1 的运算,变量a 的最终值是( )
A.3 B.1 C.0 D.4
3、关于如下程序结构的描述中,哪一项是正确的( )
for( ; ; )
{
循环体;
}
A. 一直执行循环体,即死循环 B. 执行循环体一次
C. 不执行循环体 D. 程序不符合语法要求
4、C#程序设计语言属于什么类型的编程语言( C )
A .汇编语言 B .机器语言 C .高级语言 D .自然语言
5、在类的定义中,类的( )描述了该类的对象的行为特征
A.类名 B.方法 C.所属的名字空间 D.私有域
6、C#中MyClass 为一自定义类,其中有以下方法定义public void Hello(){„}使用以下语句创建了该类
的对象,并使变量obj 引用该对象MyClass obj = new MyClass();那么如何访问类MyClass 的Hello 方法( )
A. obj.Hello();
B. obj::Hello();
C. MyClass.Hello();
D. MyClass::Hello();
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、分析下列程序:
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);
9、分析下列程序中类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
10、在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成( )
A. sealed方法 B. public 方法 C. virtual 方法 D. override 方法
11、在C#中,下列哪些语句可以创建一个具有3个初始值为””的元素的字符串数组( )
A. string StrList[3]( ””);
B. string[3] StrList= {””, ””, ””};
C. string[] StrList = {””, ””, ””};
D. string[] StrList = new string [3];
12、下列语句创建了多少个string 对象? ( )
string [,] strArray = new string[3,4];
A. 0 B.3 C.4 D.12
13、接口Animal 定义如下:
public interface Animal
{
void Move();
}
则下列抽象类的定义中,哪些是不合法的( )
A. abstract class Cat: Animal
{
public abstract 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! ”);)}
}
14、下列函数定义中,哪条语句是非法的( )
void Test()
{
int I = 100; //第一句
object s = I; //第二句
int k = s; //第三句
k = (int)s; //第四句
}
A. 第一句 B. 第二句 C. 第三句 D. 第四句
15、在C#中设计类时,如何将一个可读可写的公有属性Name 修改为只读属性( )
A. 将Name 的set 语句块删除
B. 将Name 的set 语句块置空
C. 将Name 的set 语句块前加修饰符private
D . 将Name 添加readonly 修饰符
二、多项选择题(本大题共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、从下列选项中,选出变量result 的返回值是false 的表达式( )
A. bool result = (4==5); B. bool result = (1!=1);
C. bool result = (1==1); D. bool result = 0;
4、设置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);
5、通常计算机程序是由若干条语句组成的,组成程序的常用结构分别是下列哪几种(
A .顺序结构 B.分支结构 C.循环结构 D .跳转结构
6、switch( ) 语句中的控制表达式可以是下面哪几种类型( )
C
9、下列关于派生类和抽象类的描述中,哪个选项是错误的( )
A. 在C#中要在派生类中重新定义基类的虚函数必须在前面加override
B. 抽象类必须包含一个或多个抽象成员
C. 在C#中派生类可使用base 修饰符访问基类的成员
D. 声明为abstract 类的方法必须同时进行声明和实现
10、在数组中,对于for 和foreach 语句,下列哪些选项中的说法正确的( )
A .foreach 语句能使你不用索引就可以遍历整个数组
B .foreach 语句总是遍历整个数组
C .foreach 语句总是从索引1遍历到索引Length
D .如果需要修改数组元素就必须使用for 语句
三、名词解释(本大题共5小题,每小题3分,共15分)
请用简短的语句对所给出的名词,进行简短的描述。
1、在C#编程中流程控制语句包含哪几个结构,它们分别是什么?
2、简单的描述一下类与对象的区别? )
3、举例说明一下什么是继承?
4、在声明构造函数时,应注意哪些事项;并说明一下this 在构造函数中的用法?
5、简单的描述一下什么是多态?
四、判断题(本大题共10小题,每小题1分,共10分)
请对每小题的描述进行判断,正确的括号中打”√ ”,错误的请在括号中打”×”。
1、在C# 2005编程环境中,常量的值可以在代码中被修改。 ( )
2、属性就是实体的抽象,比如,对象猫可以有重量,身长等属性。( )
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、以下代码执行后,string 类型变量str 的值仍然是“海天软件工程学院”。 ( )
string str = “海天软件工程学院”;
private void Changed(string str0)
{
str0 = “海天软件工程大学”;
}
Changed(str);
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
{
Console.Write(array[i] + "{0}", i
}
Console.WriteLine();
}
五、编码题(本大题共4小题,每小题10分,共40分)
请使用C#语言给出每道题要求的完整代码,或者在空白处补充完整剩余的代码。
1、下列算法的功能是求出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();
}
2、下列算法的功能是当控制台上输入一个字符串之后,检索字符串中的非零数字,并把这些数字相加。请完善该算法。(例如:当输入”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();
}
3、请补全在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 方法函数补充完整
4、下列算法的功能是输出10名学生的信息。请完善该算法。
public class Student
{
private string _name;
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
public string Name
{
get { return _name; }
set { _name = value; }
}
}
static void Main(string[] args)
{
ArrayList StudentList = new ArrayList();
for (int i = 0; i
{
Student obj_student = new Student();
Console.Write("请输入姓名:");
(1)____________________
Console.Write("请输入年龄:");
(2)____________________
(3)____________________
}
foreach ((4)____________________)
{
Console.WriteLine("姓名:{0},年龄:{1}", obj_student.Name, obj_student.Age);
}
}
六、附加编码题(本大题共1小题, 20分)
本题为附加题,不做要求。要求给出完整的类型库、类型库的成员变量和成员方法,代码要求有合理注释,注意编码规范。
1、编写程序模拟家乐福超市在北京2008奥运会期间举办的商品促销活动。
活动背景:家乐福超市向日本本田公司定做了五个福娃机器人促销员,分别为贝贝、晶晶、欢欢、迎迎和妮妮。
功能描述:
1) 当顾客光临超市时,五个福娃会齐声祝福“家乐福欢迎您光临! ”。
2) 其中贝贝和妮妮负责向顾客发放顾客信息表,而其他三个福娃负责给顾客发放礼品。
3) 礼品发放标准
当年龄小于等于15时为儿童,礼品为“精美玩具”。
当年龄大于15小于等于40且男性为先生时,礼品为“男式体恤”。
当年龄大于15小于等于40且女性为女士时,礼品为“女式体恤”。
当年龄大于40且男性为老先生时,礼品为“男式围巾”。
当年龄大于40且女性为老太太时,礼品为“女式围巾”。
4) 已知某天内“精美玩具”送出2000个、“男式体恤”送出5000件、“女式体恤”送出5000件、“男式围巾”送出3000条、“女式围巾”送出3000条。
5) 打印出儿童、先生、女士、老先生和老太太的人数。
一、单项选择题(本大题共15小题,每小题1分,共15分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。(这题真不简单)
1、在C#中,表示一个字符串的变量应使用以下哪条语句定义( )
A.CString str; B.string str; C.Dim str as string; D.char * str;
2、请问经过表达式 a=3+1>5?0:1 的运算,变量a 的最终值是( )
A.3 B.1 C.0 D.4
3、关于如下程序结构的描述中,哪一项是正确的( )
for( ; ; )
{
循环体;
}
A. 一直执行循环体,即死循环 B. 执行循环体一次
C. 不执行循环体 D. 程序不符合语法要求
4、C#程序设计语言属于什么类型的编程语言( C )
A .汇编语言 B .机器语言 C .高级语言 D .自然语言
5、在类的定义中,类的( )描述了该类的对象的行为特征
A.类名 B.方法 C.所属的名字空间 D.私有域
6、C#中MyClass 为一自定义类,其中有以下方法定义public void Hello(){„}使用以下语句创建了该类
的对象,并使变量obj 引用该对象MyClass obj = new MyClass();那么如何访问类MyClass 的Hello 方法( )
A. obj.Hello();
B. obj::Hello();
C. MyClass.Hello();
D. MyClass::Hello();
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、分析下列程序:
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);
9、分析下列程序中类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
10、在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成( )
A. sealed方法 B. public 方法 C. virtual 方法 D. override 方法
11、在C#中,下列哪些语句可以创建一个具有3个初始值为””的元素的字符串数组( )
A. string StrList[3]( ””);
B. string[3] StrList= {””, ””, ””};
C. string[] StrList = {””, ””, ””};
D. string[] StrList = new string [3];
12、下列语句创建了多少个string 对象? ( )
string [,] strArray = new string[3,4];
A. 0 B.3 C.4 D.12
13、接口Animal 定义如下:
public interface Animal
{
void Move();
}
则下列抽象类的定义中,哪些是不合法的( )
A. abstract class Cat: Animal
{
public abstract 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! ”);)}
}
14、下列函数定义中,哪条语句是非法的( )
void Test()
{
int I = 100; //第一句
object s = I; //第二句
int k = s; //第三句
k = (int)s; //第四句
}
A. 第一句 B. 第二句 C. 第三句 D. 第四句
15、在C#中设计类时,如何将一个可读可写的公有属性Name 修改为只读属性( )
A. 将Name 的set 语句块删除
B. 将Name 的set 语句块置空
C. 将Name 的set 语句块前加修饰符private
D . 将Name 添加readonly 修饰符
二、多项选择题(本大题共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、从下列选项中,选出变量result 的返回值是false 的表达式( )
A. bool result = (4==5); B. bool result = (1!=1);
C. bool result = (1==1); D. bool result = 0;
4、设置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);
5、通常计算机程序是由若干条语句组成的,组成程序的常用结构分别是下列哪几种(
A .顺序结构 B.分支结构 C.循环结构 D .跳转结构
6、switch( ) 语句中的控制表达式可以是下面哪几种类型( )
C
9、下列关于派生类和抽象类的描述中,哪个选项是错误的( )
A. 在C#中要在派生类中重新定义基类的虚函数必须在前面加override
B. 抽象类必须包含一个或多个抽象成员
C. 在C#中派生类可使用base 修饰符访问基类的成员
D. 声明为abstract 类的方法必须同时进行声明和实现
10、在数组中,对于for 和foreach 语句,下列哪些选项中的说法正确的( )
A .foreach 语句能使你不用索引就可以遍历整个数组
B .foreach 语句总是遍历整个数组
C .foreach 语句总是从索引1遍历到索引Length
D .如果需要修改数组元素就必须使用for 语句
三、名词解释(本大题共5小题,每小题3分,共15分)
请用简短的语句对所给出的名词,进行简短的描述。
1、在C#编程中流程控制语句包含哪几个结构,它们分别是什么?
2、简单的描述一下类与对象的区别? )
3、举例说明一下什么是继承?
4、在声明构造函数时,应注意哪些事项;并说明一下this 在构造函数中的用法?
5、简单的描述一下什么是多态?
四、判断题(本大题共10小题,每小题1分,共10分)
请对每小题的描述进行判断,正确的括号中打”√ ”,错误的请在括号中打”×”。
1、在C# 2005编程环境中,常量的值可以在代码中被修改。 ( )
2、属性就是实体的抽象,比如,对象猫可以有重量,身长等属性。( )
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、以下代码执行后,string 类型变量str 的值仍然是“海天软件工程学院”。 ( )
string str = “海天软件工程学院”;
private void Changed(string str0)
{
str0 = “海天软件工程大学”;
}
Changed(str);
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
{
Console.Write(array[i] + "{0}", i
}
Console.WriteLine();
}
五、编码题(本大题共4小题,每小题10分,共40分)
请使用C#语言给出每道题要求的完整代码,或者在空白处补充完整剩余的代码。
1、下列算法的功能是求出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();
}
2、下列算法的功能是当控制台上输入一个字符串之后,检索字符串中的非零数字,并把这些数字相加。请完善该算法。(例如:当输入”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();
}
3、请补全在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 方法函数补充完整
4、下列算法的功能是输出10名学生的信息。请完善该算法。
public class Student
{
private string _name;
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
public string Name
{
get { return _name; }
set { _name = value; }
}
}
static void Main(string[] args)
{
ArrayList StudentList = new ArrayList();
for (int i = 0; i
{
Student obj_student = new Student();
Console.Write("请输入姓名:");
(1)____________________
Console.Write("请输入年龄:");
(2)____________________
(3)____________________
}
foreach ((4)____________________)
{
Console.WriteLine("姓名:{0},年龄:{1}", obj_student.Name, obj_student.Age);
}
}
六、附加编码题(本大题共1小题, 20分)
本题为附加题,不做要求。要求给出完整的类型库、类型库的成员变量和成员方法,代码要求有合理注释,注意编码规范。
1、编写程序模拟家乐福超市在北京2008奥运会期间举办的商品促销活动。
活动背景:家乐福超市向日本本田公司定做了五个福娃机器人促销员,分别为贝贝、晶晶、欢欢、迎迎和妮妮。
功能描述:
1) 当顾客光临超市时,五个福娃会齐声祝福“家乐福欢迎您光临! ”。
2) 其中贝贝和妮妮负责向顾客发放顾客信息表,而其他三个福娃负责给顾客发放礼品。
3) 礼品发放标准
当年龄小于等于15时为儿童,礼品为“精美玩具”。
当年龄大于15小于等于40且男性为先生时,礼品为“男式体恤”。
当年龄大于15小于等于40且女性为女士时,礼品为“女式体恤”。
当年龄大于40且男性为老先生时,礼品为“男式围巾”。
当年龄大于40且女性为老太太时,礼品为“女式围巾”。
4) 已知某天内“精美玩具”送出2000个、“男式体恤”送出5000件、“女式体恤”送出5000件、“男式围巾”送出3000条、“女式围巾”送出3000条。
5) 打印出儿童、先生、女士、老先生和老太太的人数。