《C#程序设计基础入门教程》_习题答案_第1页
《C#程序设计基础入门教程》_习题答案_第2页
《C#程序设计基础入门教程》_习题答案_第3页
《C#程序设计基础入门教程》_习题答案_第4页
《C#程序设计基础入门教程》_习题答案_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C#程序设计基础入门教程习题答案第1章 C#开发入门一、填空题1、 .dll、 .exe2、 CLR3、 编译、运行4、 互操作性5、 Console.WriteLine()二、选择题1、 C 2、B3、C4、A5、D三、问答题1、 它是一个全新的、集成的、面向对象的开发平台,它以公共语言运行时(Common Language Runtime,简写CLR)为基础,支持多种编程语言。 2、 .NET平台是一个环境,而C#只是一门语言,并不是它的一部分。C#语言编写的程序可以在.NET平台上运行。 四、编程题1、参考答案 class Program static void Main(string

2、args) Console.WriteLine("这是我的第一个C#程序!"); Console.ReadKey(); 第2章 C#编程基础(上)一、填空题1、 class2、 true和false3、 54、 值数据类型、引用数据类型5、 1、46、 & && | | 7、 08、 单行注释、多行注释、文档注释9、 break10、 1000 二、判断题1、 错2、错3、错4、对5、错三、选择题1、 AD 2、BCD3、C4、C5、C6 、A7、AC8、AC9、BD10、A四、程序分析题1、 编译不通过。int值4和b相加时,由于变量b的类型为by

3、te,取值范围没有int类型大,存不下int类型的值,因此编译不通过。2、 编译不通过。这是因为y是在最里层的代码块中定义的一个变量,只有在那个代码块中才可使用,在使用y = x;语句时已经超过了y变量的作用域,所以编译无法通过。3、 编译不通过。因为switch语句中的每个分支语句之间需要使用break关键字隔开,如果没有break语句就会报错。4、 打印结果为: 9 8 7五、问答题1、标识符可以由任意顺序的大小写字母、数字、下划线(_)和符号组成,但标识符不能以数字开头,且不能是C#中的关键字。2、如果使用“&”在表达式之间进行连接,那么无论任何情况,“&”两边的表达式都

4、会参与计算。如果使用“&&”进行连接,当“&&”左边的表达式为false,则不会执行其右边的表达式。例如定义int x = 2,y = 0; bool b = x < y & x / 2 > 0表达是会发生被0除异常,因为x / y的表达式执行了。而bool b = x < y & x / 2 > 0是不会出现这种异常的,因为x < y为false,表达式x / y不会执行。3、相同点:1、二者都可以多次执行循环体。2、二者都可以进行循环次数确定的循环操作。不同点:1、 在循环次数不确定的情况下,一般会使用while

5、循环。2、 在while循环中,条件表达式中的变量都会定义在while语句的外面,而在for循环中,条件表达式中的变量都会定义在for语句中。六、编程题1、参考答案 public class Test01 public static void Main(string args) int x = 5; if (x % 2 != 0) Console.WriteLine("x是一个奇数"); else Console.WriteLine("x是一个偶数"); Console.ReadKey(); 2、参考答案 public class Test02 publ

6、ic static void Main(string args) int sum=0; for (int i = 1; i <=99; i+) if (i % 2 != 0) sum += i; Console.WriteLine("1-99之间的奇数和为:"+sum); Console.ReadKey(); 第3章 C#编程基础(下)一、填空题1、 void2、 方法名相同、方法签名不同3、 自身4、 params5、 逐语句、逐过程6、 帕斯卡命名规范7、 结束条件8、 99、 断点10、 6 二、判断题1、 对2、错3、对4、对5、错三、选择题1、 AC 2、B

7、C3、C4、B5、B6 、BD 7、 C8、A9、AC10、A四、程序分析题1、 编译不通过,Say()方法没有返回值。2、 编译不能通过,在给TestFunc()方法传参时必须加上ref。3、 编译不能通过,参数为out类型的方法,必须在方法内对参数赋值。 五、简答题1、方法重载是指:允许在一个类中同名方法的存在,但是方法的参数列表必须不同。实现重载的条件是方法名必须相同,参数类型或个数必须不同。当调用该方法时,根据参数的不同可以产生不同的结果。2、ref参数是用于传递参数的引用,而不是参数的值。out参数则用于将值从方法体内传到方法体。ref参数必须在方法调用前赋值,out参数必须在方法内

8、进行赋值。3、逐语句调试会进入方法的内部调试,单步执行方法体的每一句带代码。逐过程调试就是不会进入方法体内部,而是把方法当做一行代码来执行。六、编程题1、参考答案 class Program public static void Main(string args) int sum = Func(99); Console.WriteLine("sum = " + sum); Console.ReadKey(); public static int Func(int n) int sum = n; if (n < 1) sum += 1; else sum += Func

9、(n - 2); return sum; 2、参考答案 class Program public static void Main(string args) int result=0; Console.Write("请输入x的值:"); int input=int.Parse(Console.ReadLine(); result = Result(input); Console.WriteLine("y的结果为:0",result); Console.ReadKey(); public static int Result(int x) if (x >

10、; 0) return x + 3; else if (x < 0) return x * x - 1; else return 0; 3、参考答案class Program public static void Main(string args) int arr = 25, 24, 12, 76, 101, 96, 28 ; Console.Write("冒泡排序前:"); PrintArray(arr); /打印数组元素 BubbleSort(arr); /调用排序方法 Console.Write("冒泡排序后:"); PrintArray(a

11、rr); /打印数组元素 Console.ReadKey(); /定义打印数组的方法 public static void PrintArray(int arr) /循环遍历数组的元素 for (int i = 0; i < arr.Length; i+) Console.Write(arri + " "); /打印元素和空格 Console.WriteLine(); /定义对数组排序的方法 public static void BubbleSort(int arr) /定义外层循环 for (int i = 0; i < arr.Length - 1; i+)

12、 /定义内层循环 for (int j = 0; j < arr.Length - i - 1; j+) if (arrj > arrj + 1) /比较相邻元素 /下面的三行代码用于交换两个元素 int temp = arrj; arrj = arrj + 1; arrj + 1 = temp; 第4章 面向对象基础一、填空题1、封装、继承、多态 2、new 3、成员变量、局部变量4、类5、静态的6、模板7、静态方法 类名.方法名8、内部类9、字段 private10、对象初始化器二、判断题1、对 2、对 3、错 4、对 5、错三、选择题1、B 2、D 3、B 4、ABC 5、A

13、BCD 6、ACD 7、ABCD 8、ABCD 9、D 10、D 四、程序分析题1、程序不能编译通过,因为在类A中的成员变量secret用private修饰,所以在类Test1中无法访问。2、程序不能编译通过,因为在静态方法method()中不能访问非静态成员变量x。3、程序能够编译通过,运行的结果为“inner”。五、简答题1、构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。而普通方法只有在使用的时 候才会被调用。在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声 明、在方法中不能使用return语句返回一个值。2、面向对象的三大特性:封装、继承、多态。封装是

14、将对象的特性和行为封装起来,不需要外界只 具体的实现细节,使用时直接调用即可。继承主要用来描述类与类之间的关系,通过继承可以复用已有的代码并在此基础上进行扩展。多态是指同一操作用于不同对象,会产生不同的执行结果。六、编程题1、参考答案class Student private String name;private double grade;public Student() public Student(String name, double grade) = name;this.grade = grade;public String getName() return na

15、me;public void setName(String name) = name;public double getGrade() return grade;public void setGrade(double grade) this.grade = grade;public class Test01 public static void main(String args) Student stu1 = new Student();stu1.setName("zhangsan");stu1.setGrade(99);Student stu2 = n

16、ew Student("lisi", 100);2、参考答案class SingleExample private static SingleExample instance;private SingleExample() /无参构造方法 public static SingleExample Method() if(instance=null) Instance=new SingleExample();第5章 面向对象高级一、填空题1、继承 2、抽象方法、抽象类 3、using4、派生类或子类5、base6、sealed7、new8、Object9、try、catch10

17、、virtual、override二、判断题1、错 2、对 3、错 4、对 5、对三、选择题1、B 2、C 3、ABD 4、ABCD 5、C 6、AC 7、C 8、ACD 9、A 10、B 四、分析题1、不能编译通过,由于Dog和Cat类没有继承关系。无法将cat()隐式转换为Dog()类型。2、不能编译通过,Dog类中的shout()方式是密封的,在BlackDog类中不能重写该方法。3、程序能够编译通过。4、编译不能通过,因为Dog类中没有实现Animal接口中的全部方法。五、简答题1、方法重写是:当子类继承父类中的方法时,父类方法的功能不能满足子类的需求,通过重写父类的方法可以增加或修改

18、相应的功能。实现方法重写的条件是:要求子类的方法名、参数类型和参数个数必须与父类方法相同,而且父类方法必须使用virtual关键字修饰,子类方法必须使用override关键字修2、多态就是不属于同一个类的多个对象调用相同方法,产生的结果不同。实现多态有三种方式:方法,抽象类,接口。3、抽象类使用abstract关键字,抽象类中可以有抽象方法,也可以有非抽象方法。接口使用interface关键字,接口中所有的方法都是抽象方法。六、编程题1、参考答案class Program static void Main(string args) Student student = new Student(&

19、quot;小明",18); Undergraduate degree = new Undergraduate("小刚",28,"学士"); student.Show(); degree.Show(); Console.ReadKey(); class Student public string Name get; set; public int Age get; set; public Student(string name,int age) this.Name = name; this.Age = age; public void Show(

20、) Console.WriteLine("姓名:0 年龄:1",Name,Age); class Undergraduate:Student public string Degree get; set; / 调用父类的构造方法 public Undergraduate(string name, int age, string degree):base(name,age) this.Name = name; this.Age = age; this.Degree = degree; public new void Show() Console.WriteLine("

21、姓名:0 年龄:1 学位:2",Name,Age ,Degree); 2、参考答案 class Program static void Main(string args) Square square = new Square(); Circle circle = new Circle(); Console.WriteLine("正方形的面积为:0",square.Area(2); Console.WriteLine("圆形的面积为: 0",circle.Area(3); Console.ReadKey(); /定义一个接口 interface

22、Shape double Area(double x); /定义一个实现计算面积的抽象方法 /实现接口Shape class Square:Shape /计算正方形的面积 public double Area(double x) return x*x; class Circle:Shape /计算圆形的面积 public double Area(double x) return Math.PI*x*x; 第6章 WinForm基础一、填空题1、 Form1设计、Form1.cs2、 SelectedItem3、 Run()4、 控制Tick事件触发的频率5、 Form1.Designer.cs

23、6、 Form1.resx7、 Program.cs8、 Control9、 Load10、ExpandAll()二、判断题1、对 2、对 3、对 4、对 5、对三、选择题1、D 2、D 3、B 4、C 5、A 6、A 7、D 8、B 9、B 10、A四、程序分析题一、1、btnSecond.Visible=false;2、btnSecond.Visible=true; btnFirst.Visible=false;3、btnSecond.Visible=false; btnFirst.Visible=true;二、1、string musics = "真的爱你", &qu

24、ot;无悔这一生" ; for (int i = 0; i < musics.Length; i+) cmbShow.Items.Add(musicsi); 2、cmbShow.SelectedIndex = 0;3、!string.IsNullOrEmpty(txtName.Text)4、cmbShow.Items.Add(txtName.Text);5、cmbShow.SelectedIndex = cmbShow.Items.Count - 1;6、txtName.Text = ""7、MessageBox.Show("请输入歌曲的名字!&q

25、uot;);五、简答题 1、WinForm项目的文件结构包括五个部分,分别是Properties、引用、App.config、Form1.cs、Program.cs,其中Properties用来设置项目的属性,引用用来设置对其他项目命名空间的引用,App.config用来设置数据库的配置信息,Form1.cs文件用来设置窗体界面以及编写逻辑代码,Program.cs文件用来设置项目运行时的主窗体。2、属性:1、Name属性在指示代码中用来标识该对象的名称。2、Text属性用来表示与控件关联的文本。3、Visible属性用来确定该控件时可见的还是隐藏的。4、Enabled属性用来指示是

26、否启用该控件5、Tag属性表示与对象关联的用户定义数据。事件:1、 Load事件在窗体加载时被触发。2、 Click事件在单击控件时发生。3、 MouseEnter事件在鼠标进入控件的可见部分时发生。4、 MouseLeave事件在鼠标离开控件的可见部分时发生。5、 FontChanged事件在控件的Font属性值更改时引发的事件。六、编程题1、 运行效果图弹出消息框显示“用户名或密码不能为空!”弹出消息框显示“用户名或密码不正确!”弹出消息框显示“登陆成功!”参考逻辑代码 public partial class FormLogin : Form public FormLogin() Ini

27、tializeComponent(); private void btnLogin_Click(object sender, EventArgs e) string name = txtName.Text; string password = txtPassword.Text; if (string.IsNullOrEmpty(name) | string.IsNullOrEmpty(password) MessageBox.Show("用户名或密码不能为空!"); else if (txtName.Text = "user" && tx

28、tPassword.Text = "itcast") MessageBox.Show("登陆成功!"); else MessageBox.Show("用户名或者密码不正确!"); 2、 运行效果图显示湖北省下的三个市参考逻辑代码 public partial class FormCity : Form public FormCity() InitializeComponent(); private void Form5_Load(object sender, EventArgs e) cmbProvince.Items.AddRang

29、e(new string "河北省", "湖北省" ); cmbProvince.SelectedIndex = 0; private void cmbProvince_SelectedIndexChanged(object sender, EventArgs e) cmbCity.Items.Clear(); if (cmbProvince.SelectedIndex = 0) cmbCity.Tag = "0" cmbCity.Items.AddRange(new string "唐山市", "石家庄

30、市", "邯郸市" ); cmbCity.SelectedIndex = 0; if (cmbProvince.SelectedIndex = 1) cmbCity.Tag = "1" cmbCity.Items.AddRange(new string "武汉市", "荆州市", "十堰市" ); cmbCity.SelectedIndex = 0; 第7章 C#常用类一、填空题1、String类、StringBuilder类 2、字符 3、ToCharArray()4、25、int6

31、、StringBuilder类创建的字符串的长度是可变的7、TimeSpan()8、Length9、Now10、Append()二、判断题1、错 2、对 3、错 4、对 5、错三、选择题1、D 2、C 3、A 4、B 5、B 6、B 7、C 8、A 9、B 10、C 四、分析题1、编译不能通过,因为string对象的索引器为只读,不能对其赋值。2、编译不能通过,因为方法IsNullOrEmpty()是String类的静态方法。3、编译不能通过,无法将StringBuilder类型隐式转换为String类型。五、简答题1、相同点:都是用来处理字符串的类。不同点:String具有不可变性,Stri

32、ngBuilder是可变的,当需要多次操作字符串是,StringBuilder性能较高2、例如 string s=”abc”; s=s+”d”; 此时原有的abc字符串并没有改变,而是重写指向了abcd字符串。 六、编程题1、参考答案public static void Main(string args) string str = "HelloWorld" StringBuilder sb=new StringBuilder(); for (int i = 0; i < str.Length; i+) /如果是小写字母 if (stri >= 'a

33、9; && stri <= 'z') /将字符转换为字符串并使用ToUpper()转换为大写 sb.Append( stri.ToString().ToUpper(); else sb.Append( stri.ToString().ToLower(); /输出动态字符串的内容 Console.WriteLine(sb.ToString(); Console.ReadKey(); 2、 参考答案static void Main(string args) char chineseWord = '零', '一', '二&

34、#39;, '三', '四', '五', '六', '七', '八', '九' ; string timeStr = "2014.01.01" StringBuilder sb = new StringBuilder(); /将字符串分割成数组 string times = timeStr.Split(new char'.', StringSplitOptions.RemoveEmptyEntries); /遍历数组 for (int timesC

35、ount = 0; timesCount < times.Count(); timesCount+) /获取当前循环到的字符串 string str=timestimesCount; /拼接年部分转换后的字符串 if (timesCount = 0) int index; for (int strCount = 0; strCount < str.Length; strCount+) index = Convert.ToInt32(strstrCount.ToString(); sb.Append(chineseWordindex); sb.Append("年"

36、); break; else /月份或天转换后的字符串 sb.Append(JoinStr(str, chineseWord); switch (timesCount) case 1:sb.Append("月"); break; case 2:sb.Append("日"); break; Console.WriteLine(sb.ToString(); Console.ReadKey(); /用于拼接月或日转换后的字符串。 private static string JoinStr(string str, char chineseWord) String

37、Builder sb = new StringBuilder(); int index; /循环月份或天的字符串 for (int strCount = 0; strCount < str.Length; strCount+) /索引为0时表示月或天的第一位 if (strCount = 0) /可取值0,1,2,3 switch (str0) case '0': ; break; case '1': sb.Append("十"); break; case '2': sb.Append("二十");

38、break; case '3': sb.Append("三十"); break; else /将传递的字符串对应的索引位上的值转换成数字。 index = Convert.ToInt32(strstrCount.ToString(); /当月份的第二位为0时什么都不用做否则找到汉字数组中对应的汉字 if (index != 0) sb.Append(chineseWordindex); return sb.ToString(); 3、参考答案public static void Main(string args) string str = "一日,

39、天气炎热。两香蕉在路上散步,一香蕉抱怨道:“好热,好热啊。”遂脱衣。另一香蕉遂倒" StringBuilder sb = new StringBuilder(); if (str.Contains("脱衣") int index = str.IndexOf("脱衣"); string str1 = str.Substring(0,index); string str2 = str.Substring(index + 2); sb.Append(str1); sb.Append("*"); sb.Append(str2); C

40、onsole.WriteLine(sb.ToString(); Console.ReadKey(); 第8章 文件操作一、填空题1、输入流、输出流2、Copy()3、GetParent()4、System.IO5、Directory、DirectoryInfo6、Serializable7、GetFullPath()8、序列化9、FileMode10、FileStream二、判断题1、错 2、对 3、对 4、错 5、错三、选择题1、A 2、C 3、ABD 4、C 5、C 6、AB 7、A 8、D 9、C 10、A 四、程序填空题1、File.Exists("D:1.txt")、"D:1.txt","D:2.txt"、File.Copy、File.Delete2、sr.ReadLine()、sw.Dispose() 五、简答题1、流是对计算机输入输出设备之间数据传输的一种抽象,例如通过键盘输入数据、显示器显示程序的运行结果等这些都是流。2、StreamReader和StreamWriter类都是以用于处理文本文件的,只是StreamReader用于读取文件,Str

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论