完美版本C#习题册解析.docx

上传人:b****5 文档编号:6195330 上传时间:2023-01-04 格式:DOCX 页数:16 大小:74.20KB
下载 相关 举报
完美版本C#习题册解析.docx_第1页
第1页 / 共16页
完美版本C#习题册解析.docx_第2页
第2页 / 共16页
完美版本C#习题册解析.docx_第3页
第3页 / 共16页
完美版本C#习题册解析.docx_第4页
第4页 / 共16页
完美版本C#习题册解析.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

完美版本C#习题册解析.docx

《完美版本C#习题册解析.docx》由会员分享,可在线阅读,更多相关《完美版本C#习题册解析.docx(16页珍藏版)》请在冰豆网上搜索。

完美版本C#习题册解析.docx

完美版本C#习题册解析

C#课程复习纲要

第一部分知识点

C#控制台应用程序结构,熟练掌握输入、输出语句

第二部分知识点(重点章节):

C#编程基础

C#标识符的命名规则;C#常用关键字

【重点】:

C#的数据类型。

基本数据类型(又称值类型)和引用类型(如:

字符串、数组、类、接口等)

C#常量和变量;转义字符

数据类型转换(自动类型转换、强制类型转换)

【重点】:

运算符和表达式

【重点】:

程序的控制结构(顺序结构、分支结构、循环结构、跳转结构)

控制结构的应用,如:

阶乘计算、九九乘法表、杨辉三角、百鸡(百马)问题、水仙花数等问题的编程。

第三部分知识点(重点章节)

一、二维静态、动态数组的创建及使用;字符串的定义、赋值及常用方法;

Math、string、Array、ArrayList、Integer、Float、Double等类的常用方法。

Parse、ToString、Format等方法的使用

第四部分知识点

面向对象程序设计概述。

理解类和对象的内涵,并能正确声明类、创建对象。

熟练定义类、属性、字段、方法及构造方法和析构方法。

理解委托和事件的关系及接口概念

掌握集合,包括:

ArrayList、List、Queue、Stack类

知识点:

标识符的命名规则

●标识符的合法符号包括:

字母、数字、下划线、连接字符、组合字符、格式设置符。

字母为大写或小写的英文字母,数字为0~9;

●标识符必须以字母或下划线开头,即数字不允许为标识符的首字母;

●标识符区分大小写;

●标识符不允许与关键字相同,但允许关键字作为标识符的一部分。

如同名,可在变量前加@;

●变量名不能与C#的库函数同名。

知识点:

转义字符

●转义字符用于表述特定的功能或执行特殊的动作;

●常见转义字符:

水平制表符、退格符、回车符、换行符等。

知识点:

关键字

●关键字是C#语言定义、并赋予特定含义的一类标识符,用户只能按照规定使用这些关键字;

●掌握常见关键字。

知识点:

常量和变量、数据类型

●基本数据类型;

●变量是程序运行过程中数据类型不变,但数值可以发生改变的一种量;

●变量三要素:

变量名、变量数据类型、变量值;

●变量要先定义、再使用。

知识点:

数组

●数组是具有相同类型的数据的集合,数组元素的类型可以使基本数据类型,也可以使类或接口;

●使用数组名和下标可以唯一确定数组中的每个元素,数组下标的索引号从0开始,故最后一个元素的索引号应是(数组长度-1);

●数组通过Length属性获得数组的长度;

●数组必须先经过声明和初始化后才能使用;

●重点掌握一、二维静态数组;

●动态数组ArrayList的使用及常用方法,如:

Add()、Sort ()、Insert()、Clear()等。

知识点:

字符串类、Math类及其常用方法

●字符串是用双引号括起来的字符序列,而字符则是使用单引号括起来的单个字符;

●C#语言将字符串视为对象,string视为类;

●字符串常用方法,如:

获得字符数组、获得字符串的长度、字母大(小)写转换、字符串的连接、删除首尾空格等;

●Math类中的常见静态方法,如:

Sqrt()、Pow()、Round()、Ceiling()、Floor()、Max()、Min()等方法。

知识点:

运算符、表达式、语句;数据类型转换

●运算符是指对数据实施运算控制的符号。

以a+b为例,参与运算的a和b称为操作数,操作数可以是常量、变量、表达式和有返回值的方法;+为运算符,各类运算符应熟记。

●表达式是指由运算符和操作数连接而成,符合计算机语言语法规则,并具有特定结果值的符号序列,a+b为表达式

●算术运算符及算术表达式;关系运算符及关系表达式;逻辑运算符及逻辑表达式;赋值运算符及赋值表达式;条件运算符及条件表达式;

●运算符的优先级;运算符的结合性;

●有效表达式后加上分号就构成了语句,如:

intc=a+b;

●理解自加、自减及复合赋值运算;

●表达式中涉及不同类型的数据时,需要进行数据类型转换。

类型转换包括:

自动类型转换和强制类型转换。

知识点:

控制结构

●控制结构包括:

顺序结构、选择分支结构、循环结构、跳转结构。

●选择分支结构:

if-else、switch-case

●循环结构:

while、do-while、for、foreach

●跳转结构:

break、continue、goto、return

例如:

阅读下面程序,程序编译或运行结果是D。

publicclassTest{

staticbooleanf(charc){

Console.Write((char)(c+2));

returntrue;

}

publicstaticvoidMain(string[]args){

inti=0;

for(f('A');f('B')&&(i<2);f('C')){

i++;

f('D');

}

}

}

A)ABDCBDCBB)ABCDABCDC)编译时出现错误D)其他结果

知识点:

●每章习题

●PPT中的编程题目

二、填空题

1))C#语言的各种数据类型之间提供两种转换:

强制和自动  。

2)C#中的三元运算符是?

;。

3)C#对运算符_重载方法___进行了扩展,不仅可以连接字符串,而且还能将字符串与其它类型数据进行连接,结果是字符串。

4)当switch后面表达式的值与任一case子句中的值都不匹配时,程序执行default面的语句;break句用来在执行完一个case分支后,使程序跳出switch语句;若没有该语句,当程序执行完匹配的case语句序列后,继续向下执行,向下执行时,并不与case后面的数据进行比较,而是直接执行下面的所有语句,直到遇到break语句为止。

5)break语句最常见的用法是在switch语句中。

通过break语句退出多路分支结构。

6)引入命名空间的命令是__using________,表示制表符的转义字符是_____"\t" __________,被称为内存分配的运算符是__new__________,表示常量的关键字是_______const___。

7)面向对象编程的重要特征___封装、继承、多态________。

8)继承是指在基类的基础上建立新的类,使得新定义的类可以继承基类的成员,还可以定义新的成员;重载是指在类中定义了功能不同但名称相同的方法或属性。

构造函数不能被继承和重载,析构函数能被继承和重载。

9)要使Label控件显示给定的文字信息,应在设计状态下设置它的文本属性值。

10)事件AEvent的预订是向委托AEventHandler的调用列表中添加方法method,格式为

AEvent+=newAEventHandler(method);

11)设x=1,y=2,z=3,则表达式y+=z--/++x执行后,y的值是3。

12)C#的逻辑运算符中,异或运算符为^;与运算符为&&;非运算符为!

;或运算符为||。

13)使用关键字delegate声明委托。

对于多个相同类型的委托,使用+=对调用列表合并,

-=实现调用列表方法的移除。

14)C#中,Parse方法可以实现将字符串型表达式转换成数值型数据,Tostring方法可以将数值型转换成字符串型。

 

三、判断题

1)C#语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式。

(对)

2)C#语言中的数组元素只能是基本数据类型而不能为对象类型。

(错)

3)intx=8;语句执行后,条件表达式x>10?

100.0:

50值为50.0。

(对)

4)类成员分为静态成员和非静态成员,静态成员属于类的对象所有,非静态成员属于类所有,只能由类名来访问。

(错)

5)C#中,对属性访问时将会调用属性的set访问器和get访问器,一般与类中的字段成员有对应关系。

(对)

6)数据在使用前一定要先声明,然后才能引用。

(对)

7)使用Length属性可以获得字符串或静态数组的长度。

(错)

8)在循环体内,使用break;语句可以跳出循环。

(对)

四、代码补充题

1)请在横线处填入适当内容将代码补充完整,使程序能正确运行。

2)下面程序对数组中每个元素赋值,然后按逆序输出。

请在横线处填入适当内容,使程序能正确运行。

classArrayTest{

staticvoid    Main     (stringargs[]){

inti;

int[]a=newint[5];

for(i=0;i<5;   i++   )

a[i]=i;

for(    i=5  ;i>=0;i--)

Console.WriteLine("a["+i+"]="+a[i]);

3)执行以下代码,输出结果是:

inti=5;

switch(i){

case3:

Console.WriteLine("java");break;

case4:

Console.WriteLine("c#");

case5:

Console.WriteLine("html");

default:

Console.WriteLine("default");

}

 

五、简答题

1)列举C#语言的优点:

●简洁的语法

●精心地面向对象设计

●与Web的紧密结合

●完整的安全性与错误处理

●版本处理技术

●灵活性与兼容性

2)C#中数据类型可分为基本数据类型和引用数据类型,简述C#有哪些基本数据类型,有哪些引用类型,并写出对应的关键字:

bool、byte、sbyte、char、decimal、double、float、int、uint、long、ulong、object、short、ushort、string

3)继承和多态的含义:

多态:

类的多态性主要指类成员方法的多态。

有方法的重载、重写和隐藏,这些东西只要你多写点代码理解了语法后就很容易撑握的。

你可以从怎样在类中实现方法的重载、重写和隐藏开始。

 

4)理解重载和重写概念:

 重载的条件:

          1.必须在同一个类中2.方法名必须相同3.参数列表不能相同。

   重写的条件:

          1.在不同的类中

         2.发生方法重写的两个方法返回值,方法名,参数列表必须完全一致

         3.子类抛出的异常不能超过父类相应的方法抛出的异常

         4.子类方法的访问级别不能低于父类相应方法的访问级别(public,package,protected,private)

         5.方法体不同

重载:

      重载发生在同一个类中;重载主要是针对同一个类中方法名相同但参数(必须的)不同或返回类型(不是必须的)不同的情况

重写:

      重写发生在有继承关系的类之间

      重写发生在派生类上,通过override关键字来改写从其父类继承过来的具有相同返回值,方法名称和参数列表的方法。

5)理解类中字段和属性的关系:

若在类的内部记录事物的状态信息则用字段,一般用private修饰,以防对外使用

对外公布的事物则使用属性,一般用public修饰,通常和私有字段联合使用,通过属性来对私有字段赋值,或通过属性来获取私有字段的值。

6)理解委托和事件:

委托是对函数的封装,可以当作给方法的特征指定一个名称。

而事件则是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程。

委托是一种引用方法的类型。

一旦为委托分配了方法,委托将与该方法具有完全相同的行为。

委托通过delegate来声明。

而事件是说在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。

事件对象用event声明。

六、编程题

1)使用循环或递归,实现对任意输入的一个整数返回它的阶乘。

提示:

循环和递归两种方式任选其一即可。

【参考代码1】递归

【参考代码2】循环

2)使用循环结构打印出九九乘法表。

最终的输出结果如下:

1*1=1

2*1=22*2=4

3*1=33*2=63*3=9

4*1=44*2=84*3=124*4=16

5*1=55*2=105*3=155*4=205*5=25

6*1=66*2=126*3=186*4=246*5=306*6=36

7*1=77*2=147*3=217*4=287*5=357*6=427*7=49

8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64

9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81

【参考代码1】

【参考代码2】

3)百马问题

classProgram

{

staticvoidMain(string[]args)

{

inta,b,c;//*大马:

3;中马:

2;2匹小马:

1现在有100担100匹马

//*a表示大马b表示中马¨ªc表示小马

for(a=0;a<=33;a++)

{

for(b=0;b<=50;b++)

{

for(c=0;c<=100;c=c+2)

{

if(a+b+c==100&&3*a+2*b+0.5*c==100)

{

Console.WriteLine("大马{0}匹,中马{1}匹,小马{2}匹",a,b,c);

}

}

}

}

Console.ReadKey();

}

}

}

4)水仙花数问题

classProgram

{

staticvoidMain(string[]args)

{

inta,b,c;

Console.WriteLine("水仙花数有:

");

for(inti=100;i<1000;i++)

{

a=i/100;//获得百位上的数字

b=(i-a*100)/10;//获得十位上的数字

c=i-a*100-b*10;//获得个位上的数字

if(a*a*a+b*b*b+c*c*c==i)

{

Console.WriteLine(i.ToString());

}

}

Console.ReadKey();

}

}

}

水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。

(例如:

1^3+5^3+3^3=153)

 

5)类的定义(包括:

常量、字段、属性、方法、构造方法及析构方法的定义)、对象的创建及使用。

常量:

一旦初始化就不再发生变化,也可以理解为符号化的常数,例如:

可以用常量PI来代替3.1415926,当需要修改PI精度时,只需在代码中改变PI的初始值就可以。

常量的声明:

需要指定其数据类型、常量名,以及初始值,并需要使用const关键字

例如:

[public]constdoublePI=3.1415;

其中,[public]可以用以下代替。

●public:

全局变量

●private:

局部变量

●new:

创建新变量,不继承父类同名变量

常量和变量在代码上的区别:

就是有无const,声明时有const则为常量,否则就是变量。

字段:

字段(field)用来存储数值或对象的真正实体简单说是私有变量(不一定是私有...)

是字段不过是个公开的字段

私有的话就是privateinti;这样外部就无法访问到了

最简单的字段和属性的定义

classClass1{

intval;

publicintValue{

get{returnthis.val;}

set{this.val=value;}

}

}它包含一个字段和一个有公开读写访问权的属性

属性:

读写那些私有字段的值。

通过属性访问数据,可以是指成只读、只写或者读写。

通过get关键字来设置只读,set关键字来设置可写,return返回读取属性的值,value表示外部是指的数值。

privatestringtest;//创建属性Test

publicstringTest

{

get

{

returntest;

}

set

{

test=value;

}

}

方法:

通过方法可以封装一段功能完整的代码,例如

publicdoubleGetArea()

{

doubler=10;

retunrnMath.PI*r*r;

}

很多时候,方法最后是没有返回任何数值的,那么返回类型就使用void关键字表示。

 

定义Student类。

其中包括四个私有字段(name,age,sex和score)、一个构造方法和show()方法。

各字段和方法的含义如下:

字段name为String类型,用于存储学生的姓名;

字段age为int类型,用于存储学生的年龄;

字段sex为boolean类型,用于存储学生性别,男生为false,女生为true;

字段score为double类型,用于存储学生的成绩;

构造方法包括四个参数,用于为字段name、age、sex和score赋值;

show()方法无参数,用于打印输出字段name、age、sex和score的信息。

编写程序测试Student类,使用构造方法创建对象并调用show()方法显示输出。

classProgram

{

staticvoidMain(string[]args)

{

Students=newStudent("zhang",18,true,90);

s.show();

}

}

classStudent

{

privatestringname;

publicstringName

{

get{returnname;}

set{name=value;}

}

privateintage;

privateboolsex;

privatedoublescore;

publicStudent(stringname,intage,boolsex,doublescore)

{

this.name=name;

this.age=age;

this.sex=sex;

this.score=score;

}

publicvoidshow()

{

Console.WriteLine(name+";"+sex+"\t"+age+"\t"+score);

}

百鸡问题

公鸡5钱一只,母鸡3钱一只,小鸡3只一钱

classProgram

{

staticvoidMain(string[]args)

{

intCock,Hen,Chick;

//For循环版本百钱百鸡|

for(Cock=0;Cock<19;Cock++)//因为公鸡最大不会超过19只,所以最多循环19

{

for(Hen=0;Hen<33;Hen++)//母鸡最大也不会超过33次,所以最多循环33次

{

Chick=100-Cock-Hen;//小鸡等于100-公鸡个数-母鸡个数

if(Cock*5+Hen*3+Chick/3==100)//判断三种鸡乘以单价的总数是否等于100元

{

Console.WriteLine("公鸡有:

{0}只,母鸡有:

{1},小鸡有:

{2}",Cock,Hen,Chick);

}

}

}

Console.WriteLine("................................................................................");

Console.ReadKey();

}

}

}

 

杨辉三角:

publicclassMyClass

{

publicstaticvoidMain()

{

Console.Write("请输入数组的长度:

");

intnum=Convert.ToInt32(Console.ReadLine());

int[,]arr=newint[num,num];

for(inti=0;i

{

for(intj=0;j

{

Console.Write("");

}

for(intj=0;j<=i;j++)

{

if(j==0||j==i)

{

arr[i,j]=1;

}

else

{

arr[i,j]=arr[i-1,j]+arr[i-1,j-1];

}

Console.Write(arr[i,j].ToString()+"");

}

Console.WriteLine();

}

Console.ReadKey();

}

}

}

 

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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