《C#程序设计基础入门教程》习题答案.docx

上传人:b****5 文档编号:11662971 上传时间:2023-03-29 格式:DOCX 页数:31 大小:44.02KB
下载 相关 举报
《C#程序设计基础入门教程》习题答案.docx_第1页
第1页 / 共31页
《C#程序设计基础入门教程》习题答案.docx_第2页
第2页 / 共31页
《C#程序设计基础入门教程》习题答案.docx_第3页
第3页 / 共31页
《C#程序设计基础入门教程》习题答案.docx_第4页
第4页 / 共31页
《C#程序设计基础入门教程》习题答案.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

《C#程序设计基础入门教程》习题答案.docx

《《C#程序设计基础入门教程》习题答案.docx》由会员分享,可在线阅读,更多相关《《C#程序设计基础入门教程》习题答案.docx(31页珍藏版)》请在冰豆网上搜索。

《C#程序设计基础入门教程》习题答案.docx

《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=x0表达是会发生被0除异常,因为x/y的表达式执行了。

而boolb=x0是不会出现这种异常的,因为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#常用类

一、填空题

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1