《C#程序设计基础入门教程》课后习题答案.docx
- 文档编号:12935879
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:36
- 大小:43.46KB
《C#程序设计基础入门教程》课后习题答案.docx
《《C#程序设计基础入门教程》课后习题答案.docx》由会员分享,可在线阅读,更多相关《《C#程序设计基础入门教程》课后习题答案.docx(36页珍藏版)》请在冰点文库上搜索。
《C#程序设计基础入门教程》课后习题答案
《C#程序设计基础入门教程》习题答案
第1章C#开发入门
一、填空题
1、.dll、.exe
2、CLR
3、编译、运行
4、互操作性
5、Console.WriteLine()
二、选择题
1、C2、B3、C4、A5、D
三、问答题
1、它是一个全新的、集成的、面向对象的开发平台,它以公共语言运行时(CommonLanguageRuntime,简写CLR)为基础,支持多种编程语言。
2、.NET平台是一个环境,而C#只是一门语言,并不是它的一部分。
C#语言编写的程序可以在.NET平台上运行。
四、编程题
1、参考答案
classProgram
{
staticvoidMain(string[]args)
{
Console.WriteLine("这是我的第一个C#程序!
");
Console.ReadKey();
}
}
第2章C#编程基础(上)
一、填空题
1、class
2、true和false
3、5
4、值数据类型、引用数据类型
5、1、4
6、&&&|||
7、0
8、单行注释、多行注释、文档注释
9、break
10、1000
二、判断题
1、错2、错3、错4、对5、错
三、选择题
1、AD2、BCD3、C4、C5、C6、A7、AC8、AC9、BD10、A
四、程序分析题
1、编译不通过。
int值4和b相加时,由于变量b的类型为byte,取值范围没有int类型大,存不下int类型的值,因此编译不通过。
2、编译不通过。
这是因为y是在最里层的代码块中定义的一个变量,只有在那个代码块中才可使用,在使用y=x;语句时已经超过了y变量的作用域,所以编译无法通过。
3、编译不通过。
因为switch语句中的每个分支语句之间需要使用break关键字隔开,如果没有break语句就会报错。
4、打印结果为:
9
8
7
五、问答题
1、标识符可以由任意顺序的大小写字母、数字、下划线(_)和@符号组成,但标识符不能以数字开头,且不能是C#中的关键字。
2、如果使用“&”在表达式之间进行连接,那么无论任何情况,“&”两边的表达式都会参与计算。
如果使用“&&”进行连接,当“&&”左边的表达式为false,则不会执行其右边的表达式。
例如定义intx=2,y=0;boolb=x
而boolb=x 3、相同点: 1、二者都可以多次执行循环体。 2、二者都可以进行循环次数确定的循环操作。 不同点: 1、在循环次数不确定的情况下,一般会使用while循环。 2、在while循环中,条件表达式中的变量都会定义在while语句的外面,而在for循环中,条件表达式中的变量都会定义在for语句中。 六、编程题 1、参考答案 publicclassTest01 { publicstaticvoidMain(string[]args) { intx=5; if(x%2! =0) { Console.WriteLine("x是一个奇数"); } else { Console.WriteLine("x是一个偶数"); } Console.ReadKey(); } } 2、参考答案 publicclassTest02 { publicstaticvoidMain(string[]args) { intsum=0; for(inti=1;i<=99;i++) { if(i%2! =0) { sum+=i; } } Console.WriteLine("1-99之间的奇数和为: "+sum); Console.ReadKey(); } } 第3章C#编程基础(下) 一、填空题 1、void 2、方法名相同、方法签名不同 3、自身 4、params 5、逐语句、逐过程 6、帕斯卡命名规范 7、结束条件 8、9 9、断点 10、6 二、判断题 1、对2、错3、对4、对5、错 三、选择题 1、AC2、BC3、C4、B5、B6、BD7、C8、A9、AC10、A 四、程序分析题 1、编译不通过,Say()方法没有返回值。 2、编译不能通过,在给TestFunc()方法传参时必须加上ref。 3、编译不能通过,参数为out类型的方法,必须在方法内对参数赋值。 五、简答题 1、方法重载是指: 允许在一个类中同名方法的存在,但是方法的参数列表必须不同。 实现重载的条件是方法名必须相同,参数类型或个数必须不同。 当调用该方法时,根据参数的不同可以产生不同的结果。 2、ref参数是用于传递参数的引用,而不是参数的值。 out参数则用于将值从方法体内传到方法体。 ref参数必须在方法调用前赋值,out参数必须在方法内进行赋值。 3、逐语句调试会进入方法的内部调试,单步执行方法体的每一句带代码。 逐过程调试就是不会进入方法体内部,而是把方法当做一行代码来执行。 六、编程题 1、参考答案 classProgram { publicstaticvoidMain(string[]args) { intsum=Func(99); Console.WriteLine("sum="+sum); Console.ReadKey(); } publicstaticintFunc(intn) { intsum=n; if(n<1) { sum+=1; } else { sum+=Func(n-2); } returnsum; } } 2、参考答案 classProgram { publicstaticvoidMain(string[]args) { intresult=0; Console.Write("请输入x的值: "); intinput=int.Parse(Console.ReadLine()); result=Result(input); Console.WriteLine("y的结果为: {0}",result); Console.ReadKey(); } publicstaticintResult(intx) { if(x>0) { returnx+3; } elseif(x<0) { returnx*x-1; } else { return0; } } } 3、参考答案 classProgram { publicstaticvoidMain(string[]args) { int[]arr={25,24,12,76,101,96,28}; Console.Write("冒泡排序前: "); PrintArray(arr);//打印数组元素 BubbleSort(arr);//调用排序方法 Console.Write("冒泡排序后: "); PrintArray(arr);//打印数组元素 Console.ReadKey(); } //定义打印数组的方法 publicstaticvoidPrintArray(int[]arr) { //循环遍历数组的元素 for(inti=0;i { Console.Write(arr[i]+"");//打印元素和空格 } Console.WriteLine(); } //定义对数组排序的方法 publicstaticvoidBubbleSort(int[]arr) { //定义外层循环 for(inti=0;i { //定义内层循环 for(intj=0;j { if(arr[j]>arr[j+1])//比较相邻元素 { //下面的三行代码用于交换两个元素 inttemp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } } } 第4章面向对象基础 一、填空题 1、封装、继承、多态 2、new 3、成员变量、局部变量 4、类 5、静态的 6、模板 7、静态方法类名.方法名 8、内部类 9、字段private 10、对象初始化器 二、判断题 1、对2、对3、错4、对5、错 三、选择题 1、B2、D3、B4、ABC5、ABCD6、ACD7、ABCD8、ABCD9、D10、D 四、程序分析题 1、程序不能编译通过,因为在类A中的成员变量secret用private修饰,所以在类Test1中无法访问。 2、程序不能编译通过,因为在静态方法method()中不能访问非静态成员变量x。 3、程序能够编译通过,运行的结果为“inner”。 五、简答题 1、构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。 而普通方法只有在使用的时候才会被调用。 在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值。 2、面向对象的三大特性: 封装、继承、多态。 封装是将对象的特性和行为封装起来,不需要外界只具体的实现细节,使用时直接调用即可。 继承主要用来描述类与类之间的关系,通过继承可以复用已有的代码并在此基础上进行扩展。 多态是指同一操作用于不同对象,会产生不同的执行结果。 六、编程题 1、参考答案 classStudent { privateStringname; privatedoublegrade; publicStudent() { } publicStudent(Stringname,doublegrade){ this.name=name; this.grade=grade; } publicStringgetName() { returnname; } publicvoidsetName(Stringname) { this.name=name; } publicdoublegetGrade() { returngrade; } publicvoidsetGrade(doublegrade) { this.grade=grade; } } publicclassTest01 { publicstaticvoidmain(String[]args) { Studentstu1=newStudent(); stu1.setName("zhangsan"); stu1.setGrade(99); Studentstu2=newStudent("lisi",100); } } 2、参考答案 classSingleExample { privatestaticSingleExampleinstance; privateSingleExample(){}//无参构造方法 publicstaticSingleExampleMethod() { if(instance==null) { Instance=newSingleExample(); } } } 第5章面向对象高级 一、填空题 1、继承 2、抽象方法、抽象类 3、using 4、派生类或子类 5、base 6、sealed 7、new 8、Object 9、try、catch 10、virtual、override 二、判断题 1、错2、对3、错4、对5、对 三、选择题 1、B2、C3、ABD4、ABCD5、C6、AC7、C8、ACD9、A10、B 四、分析题 1、不能编译通过,由于Dog和Cat类没有继承关系。 无法将cat()隐式转换为Dog()类型。 2、不能编译通过,Dog类中的shout()方式是密封的,在BlackDog类中不能重写该方法。 3、程序能够编译通过。 4、编译不能通过,因为Dog类中没有实现Animal接口中的全部方法。 五、简答题 1、方法重写是: 当子类继承父类中的方法时,父类方法的功能不能满足子类的需求,通过重写父类的方法可以增加或修改相应的功能。 实现方法重写的条件是: 要求子类的方法名、参数类型和参数个数必须与父类方法相同,而且父类方法必须使用virtual关键字修饰,子类方法必须使用override关键字修 2、多态就是不属于同一个类的多个对象调用相同方法,产生的结果不同。 实现多态有三种方式: 方法,抽象类,接口。 3、抽象类使用abstract关键字,抽象类中可以有抽象方法,也可以有非抽象方法。 接口使用interface关键字,接口中所有的方法都是抽象方法。 六、编程题 1、参考答案 classProgram { staticvoidMain(string[]args) { Studentstudent=newStudent("小明",18); Undergraduatedegree=newUndergraduate("小刚",28,"学士"); student.Show(); degree.Show(); Console.ReadKey(); } } classStudent { publicstringName { get; set; } publicintAge { get; set; } publicStudent(stringname,intage) { this.Name=name; this.Age=age; } publicvoidShow() { Console.WriteLine("姓名: {0}年龄: {1}",Name,Age); } } classUndergraduate: Student { publicstringDegree { get; set; } //调用父类的构造方法 publicUndergraduate(stringname,intage,stringdegree): base(name,age) { this.Name=name; this.Age=age; this.Degree=degree; } publicnewvoidShow() { Console.WriteLine("姓名: {0}年龄: {1}学位: {2}",Name,Age,Degree); } } 2、参考答案 classProgram { staticvoidMain(string[]args) { Squaresquare=newSquare(); Circlecircle=newCircle(); Console.WriteLine("正方形的面积为: {0}",square.Area (2)); Console.WriteLine("圆形的面积为: {0}",circle.Area(3)); Console.ReadKey(); } } //定义一个接口 interfaceShape { doubleArea(doublex);//定义一个实现计算面积的抽象方法 } //实现接口Shape classSquare: Shape { //计算正方形的面积 publicdoubleArea(doublex) { returnx*x; } } classCircle: Shape { //计算圆形的面积 publicdoubleArea(doublex) { returnMath.PI*x*x; } } 第6章WinForm基础 一、填空题 1、Form1[设计]、Form1.cs 2、SelectedItem 3、Run() 4、控制Tick事件触发的频率 5、Form1.Designer.cs 6、Form1.resx 7、Program.cs 8、Control 9、Load 10、ExpandAll() 二、判断题 1、对2、对3、对4、对5、对 三、选择题 1、D2、D3、B4、C5、A6、A7、D8、B9、B10、A 四、程序分析题 一、 1、btnSecond.Visible=false; 2、btnSecond.Visible=true; btnFirst.Visible=false; 3、btnSecond.Visible=false; btnFirst.Visible=true; 二、 1、string[]musics={"真的爱你","无悔这一生"}; for(inti=0;i { cmbShow.Items.Add(musics[i]); } 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("请输入歌曲的名字! "); 五、简答题 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属性用来指示是否启用该控件 5、Tag属性表示与对象关联的用户定义数据。 事件: 1、Load事件在窗体加载时被触发。 2、Click事件在单击控件时发生。 3、MouseEnter事件在鼠标进入控件的可见部分时发生。 4、MouseLeave事件在鼠标离开控件的可见部分时发生。 5、FontChanged事件在控件的Font属性值更改时引发的事件。 六、编程题 1、运行效果图 弹出消息框显示“用户名或密码不能为空! ” 弹出消息框显示“用户名或密码不正确! ” 弹出消息框显示“登陆成功! ” 参考逻辑代码 publicpartialclassFormLogin: Form { publicFormLogin() { InitializeComponent(); } privatevoidbtnLogin_Click(objectsender,EventArgse) { stringname=txtName.Text; stringpassword=txtPassword.Text; if(string.IsNullOrEmpty(name)||string.IsNullOrEmpty(password)) { MessageBox.Show("用户名或密码不能为空! "); } elseif(txtName.Text=="user"&&txtPassword.Text=="itcast") { MessageBox.Show("登陆成功! "); } else { MessageBox.Show("用户名或者密码不正确! "); } } } 2、运行效果图 显示湖北省下的三个市 参考逻辑代码 publicpartialclassFormCity: Form { publicFormCity() { InitializeComponent(); } privatevoidForm5_Load(objectsender,EventArgse) { cmbProvince.Items.AddRange(newstring[]{"河北省","湖北省"}); cmbProvince.SelectedIndex=0; } privatevoidcmbProvince_SelectedIndexChanged(objectsender,EventArgse) { cmbCity.Items.Clear(); if(cmbProvince.SelectedIndex==0) { cmbCity.Tag="0"; cmbCity.Items.AddRange(newstring[]{"唐山市","石家庄市","邯郸市"}); cmbCity.SelectedIndex=0; } if(cmbProvince.SelectedIndex==1) { cmbCity.Tag="1"; cmbCity.Items.AddRange(newstring[]{"武汉市","荆州市","十堰市"}); cmbCity.SelectedIndex=0; } } } 第7章C#常用类 一、填空题 1、String类、StringBuilder类 2、字符 3、ToCharArray() 4、2 5、int 6、StringBuilder类创建的字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C#程序设计基础入门教程 C# 程序设计 基础 入门教程 课后 习题 答案