《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号
浙公网安备 33010602011771号