《C# 程序设计》期终试卷
《C# 程序设计》期终试卷 <A卷>
班级: 姓名: 学号: 成绩:
一、选择题(15×1分=15分)
1、Visual Studio 2005运行在.Net Framework 平台下,请选择需要的开发框架版本( B )。
A. .Net Framework 1.0 B. Net Framework 2.0
C. Net Framework 3.0 D. Net Framework 4.0
2、下列哪一个不是面向对象编程的特征( C )。
A.继承 B.封装 C.接口 D. 多态
3、布尔类型中有TRUE和FALSE两种类型,有如下代码
bool b1=true,b2 = false;
bool b3 =!( b1 && b2);
变量b3的值是( B )。
A. NULL B. True C. 未知 D. False
4、下列选项中,(C )是引用类型。
A. enum类型 B. struct类型 C. string类型 D. int类型
5、C#中所有数据类型的基类是(A )。
A. Object B. int C. string D. Boolean
6、异常发生在什么时候(C )。
A. 编写程序时 B.编译时 C. 运行时 D. 用户请求时
7、如果有一个类名为MyClass1,则MyClass1的默认构造函数是下面哪一个(B )。
A. new MyClass1(); B.public MyClass1() {}
C. public class MyClass1 D. MyClass1();
8、C#中,回车字符对应的转义字符串为 ( A ) 。
A. \r B. \f C. \n D. \a
9、C#中执行下列语句整型变量x和y的值是多少(D )。
int x=100; int y=++x;
A .x=100 y=100 B. x=101 y=100
C. x=100 y=101 D. x=101 y=101
10、在C#编制的财务程序中,需要创建一个存储流动资金金额的临时变量,则应使用下列哪条语句(A )
A. decimal theMoney; B. int theMoney;
C. string theMoney; D. dim theMoney as double
11、C#中,新建一字符串变量str,并将字符串“Tom's Living Room”保存到串中,则应该使用下列哪条语句(A )。
A.string str = “Tom\'s Living Room”;
B. string str = “string str = “Tom’’s Living Room”;
C.string str(“Tom's Living Room”);
D.string str(“Tom’’s Living Room”);
12、在C#中,表示一个字符串的变量应使用以下哪条语句定义。( B )
A. CString str; B. string str; C. Dim str as string D. char * str;
13、数组pins的定义如下:string[ ] pins = new string[4]{"a","b","c","d"};执行下列语句后,数组pins的值为 ( B ) .
string[ ] myArr = pins ;myArr [3] = "e";
A. "a","b","e","d" B. "a","b","c","e"
C. "a","b","c","d" D. "e","e","e","d"
14、在C#程序中,入口函数的正确声明为: ( B )
A.int main(){……} B.static void
C.static void main(){……} D.void main(){……}
15、类的析构函数的作用是( D )
A. 一般成员函数 B. 类的初始化
C. 对象的初始化 D.删除对象创建的所有对象
二、填空题(15×1分=15分)
1、若double k=1234.567;且有程序片段: Console.WriteLine("{0,10:c4}",k), 上面程序片段输出结果是 _____¥1,234.5670____________。
2、a=4>5?1:2,请问a的值为_____2______________。
3、double d=-123.56; int i=(int)d; i的值现在是________-123_________。
4、如下代码:
String[] str1_array=new string[] {“C#”,”C++”,”Java”,”PHP”}
其中str1_array[2] 的值是______Java______________。
5、.NET框架的两个主要组件是__公共语言运行时__和
__.NET Framework 类库___。
6、C#中声明命名空间使用的关键字是____namespace________,导入命名空间使用的关键字是_____using_______。
7、当类实例化时首先执行的是_ 构造____函数;当实例从内存中销毁前最后执行的是_ 析构____函数。
8、请写出“-10<=x<=
_((x >= -10) && (x <= 10))___。
9、C#中实现循环的语句主要有___for___、__while____、__foreach____。
10、一个方法没有返回值,则其类型说明符应该是______void______________。
三、简答题(4×5分=20分)
1、什么是静态方法和实例方法,请举例说明。是照一定的数据模型组织,长期存
静态方法使用static 修饰,非静态方法不使用static 修饰。
例如:
Public class A
{
Public static int F1() {…}
Public int F2() {…}
}
程序调用:
Int r1=A.F1();
A a=new A();
Int r2=a.F2();
2、什么是装箱,什么是拆箱请举例说明。
装箱 :将值类型隐式转换为引用类型。
例如:int i=2008;object o=i;
拆箱:将引用类型隐式转换为值类型。
例如:int i=2008;object o=i; int j=(int)o;
3、什么是“托管代码” 什么是“非托管代码”。
以公用语言运行库为目标的代码为“托管代码”。
不以公用语言运行库为目标的代码为“非托管代码”。
4、你对面向对象程序设计的理解。
继承 封装 多态,然后发挥
四、根据程序给出运行结果(4×5分=20分)
1、使用out参数传递数据,并给出程序的运行结果?
|
Static void outcountsum(int i , int j, out int sum) { j++; i++; sum =i+j; } static void { int i=2101; int j=101; int sum; outcountsum(i, j, out sum); Console.WriteLine("i=" + i.ToString() + " j=" + j.ToString() + " sum=" + sum.ToString()); Console.Read(); } |
运行结果:
i=2101 j=101 sum=2204
2、字符串常用处理,根据给出的
|
string oldstr1 = "This is a string"; string newstr1 = oldstr1.Replace("string", "STRING"); string newstr2 = oldstr1.Insert(0, "Insert string "); string newstr3 = oldstr1.Remove(4, 3); int index = oldstr1.IndexOf("string"); Console.WriteLine(oldstr1); Console.WriteLine(newstr1); Console.WriteLine(newstr2); Console.WriteLine(newstr3); Console.WriteLine(index); Console.Read(); |
运行结果:
3、虚函数和重写函数。
|
class Program { static void { B b = new B(); A a = b; a.F1(); b.F1(); a.F2(); b.F2(); Console.Read(); } } public class A { public virtual void F1() { Console.WriteLine("A.F1"); } public void F2() { Console.WriteLine("A.F2"); } } public class B : A { public override void F1() { Console.WriteLine("B.F1"); } public void F2() { Console.WriteLine("B.F2"); } } |
运行结果:
B.F1
B.F1
A.F2
B.F2
4、日期时间处理:
|
DayOfWeek week = DateTime.Now.DayOfWeek; |
变量week的值是:<考试那天的日期 Monday>
|
int dayCount = DateTime.DaysInMonth(2010, 2); |
变量dayCount的值是:28
|
String dt = DateTime.Now.ToString("yyyy-MM-dd"); |
变量dt的值是:
考试的当前日期
|
DateTime adddt = DateTime.Now.AddDays(2); |
变量adddt的值是:
|
TimeSpan ts = new TimeSpan(1, 0, 0, 0, 0); DateTime dt1 = DateTime.Now.Add(ts); |
变量dt1的值是:
<考试的当前日期加1天,时间部分在考试之间之内>
五、程序设计(3分×10=30分)
1、把10进制整数转化为2进制数。(例如:10进制数15的2进制数是1111)
要求:
1 写出算法 及10进制数15转换为2进制数1111的过程。
2 写方法static string ConverIntToBinary(int n)
3 主程序main()调用静态方法
|
static string ConvertIntToBinary(int n) { string binary = string.Empty; ///保存二进制字符串 int i = n; int m = 0; while(i > 1) { i = n / 2; ///整除 m = n % 2; ///取模 binary = m.ToString() + binary; ///添加到binary字符串中 n = i; } if(i > 0) binary = "1" + binary; ///如果余数为1,则在binary最前面添加1 /// return binary; } |
|
Console.WriteLine(ConvertIntToBinary(15)); |
2、将下面的文本分割出来,统计出现Hello单词的次数。
文本内容如下:
The C# preprocessor is a macro processor that the C# compiler automatically uses to transform your program before actual compilation. The C# preprocessor allows you to define macros, which are brief abbreviations for longer constructs.
要求:
1 使用split方法,对句子进行分割,并保存单词到数组里面
2 统计出现“C#” 单词的次数,并显示出来。
|
string str = " The C# preprocessor is a macro processor that the C# compiler automatically uses to transform your program before actual compilation. The C# preprocessor allows you to define macros, which are brief abbreviations for longer constructs."; string[] array_str=str.Split(' '); string str1 = "C#"; int i_Count = 0; for (int i = 0; i < array_str.Length; i++) { if (array_str[i] == str1) { i_Count++; } } Console.WriteLine("单词C# 一共出现了:"+i_Count.ToString ()+"次"); |
3、按照给出的类图,完成代码设计与实现。(12分)
要求:
1 根据类图给出的Person、Teacher和Student类完成设计的设计与编码
2 根据类图提供的字段实现3个类。
3 根据类图提供的属性实现3个类。
4根据类图提供的方法ShowInfo()在3个类中完成。
5 在主程序Main()中实例化教师Teacher类和学生Student类。
|
/// <summary> /// Person类,包含姓名、年龄和课程列表等信息,并显示这些信息 /// </summary> public class Person { protected string name; protected int age; protected string[] courses; /// <summary> /// 姓名 /// </summary> public string Name { get { return name; } set { name = value; } } /// <summary> /// 年龄 /// </summary> public int Age { get { return age; } set { age = value; } } /// <summary> /// 初始化姓名和年龄 /// </summary> /// <param name="name"></param> /// <param name="age"></param> public Person(string name,int age) { this.name = name; this.age = age; } /// <summary> /// 初始化姓名、年龄和课程列表 /// </summary> /// <param name="name"></param> /// <param name="age"></param> /// <param name="courses"></param> public Person(string name,int age,string[] courses) { this.name = name; this.age = age; if(courses == null || courses.Length <= 0) { throw new Exception("参数错误"); } this.courses = new string[courses.Length]; Array.Copy(courses,this.courses,courses.Length); } /// <summary> /// 显示姓名、年龄和课程列表 /// </summary> public virtual void ShowInfo() { Console.WriteLine(string.Format("姓名:{0}",name)); Console.WriteLine(string.Format("年龄:{0}",age)); Console.WriteLine("课程如下:"); ///显示课程 if(courses == null)return; for(int i = 0; i < courses.Length; i++) { if(i < courses.Length - 1) { Console.Write(string.Format("{0},",courses[i])); } else { Console.WriteLine(string.Format("{0}",courses[i])); } } Console.WriteLine(); } } /// <summary> /// Person类,包含姓名、年龄、职务和课程列表等信息,并显示这些信息 /// </summary> public class Teacher:Person { private string duty; /// <summary> /// 职务 /// </summary> public string Duty { get { return duty; } set { duty = value; } } /// <summary> /// 初始化姓名、年龄和职务 /// </summary> /// <param name="name"></param> /// <param name="age"></param> /// <param name="duty"></param> public Teacher(string name,int age,string duty) : base(name,age) { this.duty = duty; } /// <summary> /// 初始化姓名、年龄、职务和课程列表 /// </summary> /// <param name="name"></param> /// <param name="age"></param> /// <param name="courses"></param> /// <param name="duty"></param> public Teacher(string name,int age,string[] courses,string duty) : base(name,age,courses) { this.duty = duty; } /// <summary> /// 显示姓名、年龄、职务和课程列表 /// </summary> public override void ShowInfo() { Console.WriteLine(string.Format("姓名:{0}",name)); Console.WriteLine(string.Format("年龄:{0}",age)); Console.WriteLine(string.Format("职务:{0}",duty)); Console.WriteLine("课程如下:"); ///显示课程 if(courses == null) return; for(int i = 0; i < courses.Length; i++) { if(i < courses.Length - 1) { Console.Write(string.Format("{0},",courses[i])); } else { Console.WriteLine(string.Format("{0}",courses[i])); } } Console.WriteLine(); } } /// <summary> /// Person类,包含姓名、年龄、班级和课程列表等信息,并显示这些信息 /// </summary> public class Student:Person { private string className; /// <summary> /// 班级 /// </summary> public string ClassName { get { return className; } set { className = value; } } /// <summary> /// 初始化姓名、年龄和班级 /// </summary> /// <param name="name"></param> /// <param name="age"></param> /// <param name="className"></param> public Student(string name,int age,string className) : base(name,age) { this.className = className; } /// <summary> /// 初始化姓名、年龄、班级和课程列表 /// </summary> /// <param name="name"></param> /// <param name="age"></param> /// <param name="courses"></param> /// <param name="className"></param> public Student(string name,int age,string[] courses,string className) : base(name,age,courses) { this.className = className; } /// <summary> /// 显示姓名、年龄、班级和课程列表 /// </summary> public override void ShowInfo() { Console.WriteLine(string.Format("姓名:{0}",name)); Console.WriteLine(string.Format("年龄:{0}",age)); Console.WriteLine(string.Format("班级:{0}",className)); Console.WriteLine("课程如下:"); ///显示课程 if(courses == null) return; for(int i = 0; i < courses.Length; i++) { if(i < courses.Length - 1) { Console.Write(string.Format("{0},",courses[i])); } else { Console.WriteLine(string.Format("{0}",courses[i])); } } Console.WriteLine(); } } |
主程序如下:
|
static void { string[] tcourses = new string[]{ "C#语言","数据结构"}; Teacher teacher = new Teacher("张老师",35,tcourses,"系主任"); string[] s1courses = new string[]{ "C#语言","数据结构","离散数学"}; Student s1 = new Student("学生1",20,s1courses,"200701班"); string[] s2courses = new string[]{ "C#语言","数据结构","汇编语言"}; Student s2 = new Student("学生2",21,s2courses,"200702班"); teacher.ShowInfo(); ///显示教师的信息 s1.ShowInfo(); ///显示学生1的信息 s2.ShowInfo(); ///显示学生2的信息 Console.ReadLine(); } |
浙公网安备 33010602011771号