福建农林大学C#程序设计总复习材料 联系客服

发布时间 : 星期一 文章福建农林大学C#程序设计总复习材料更新完毕开始阅读382097a37c1cfad6185fa718

(一)题型与分值分布

1、填空题(10小题,10分) 2、选择题(12小题,24分) 3、判断题(10小题,10分)

4、问答与分析题(6小题,28分) 5、程序填空题(4小题,18分) 6、程序设计题(1小题,10分)

(二)知识要点 一、C#基础知识

1、C#源文件的扩展名为cs,C#的编译器为csc。 2、C#的数据类型分为两大类:值类型和引用类型。 3、小数类型:double、float、decimal类型。

【例1】 在C#编制的财务程序中,需要创建一个存储流动资金金额的变量theMoney,则应该将该变量定义为__decimal__类型。

4、整数相除的结果为整数,小数相除的结果为小数。

【例2】已知某专业有x名男生,每间宿舍住y个人,使用c#表达式__(x + y - 1) / y_可以用于计算宿舍总数。

【例3】假设变量a、b、c为大于1的整数,则代数式1对应的c#表达式为

abc_____________1.0 / (a * b * c)。

5、假设有两个整型数x和 y,则表达式 (x ^ y) ^ y值还原为x 。 6、将一个数左移N位相当于将一个数乘以2的n次方。 【例4】1<<8的结果为______256______。

7、基本数据类型的转换:隐式转换、强制转换、数据类型的自动提升。 【例5】设有如下变量说明: ( B )

byte myByte; int myInt; long myLong; float myFloat;

以下赋值语句哪个需要强制转换。

A.myInt = myByte; B.myInt = myLong; C.myByte = 3;

D.myFloat = myLong;

【例6】以下代码的输出结果为: ( B ) int a = 3;

Console.WriteLine(\ Console.WriteLine(2 + a); // 5 Console.WriteLine(2 + a + \// 5 Console.WriteLine(2 + \ // 23

A.第2行出现编译错误 B.输出 23, 5, 5 和23.

C.输出5, 5, 5 和23.

D.输出 5, 5, 23 和23.

8、流程控制:if、switch、while、for、break、continue等语句。

【例7】设有如下代码段,当变量x的取值为__2 或3___能使程序输出\。 switch ( x ){

case 1: Console.WriteLine (\ case 2: case 3: Console.WriteLine \ default: Console.WriteLine (\

}

【例8】以下程序的运行结果为 ( C ) int i,j,k; for (i = 0; i < 3; i++) // i的范围: 0, 1, 2 for(j=1; j < 4; j++) // j的范围: 1, 2, 3 for(k=2; k<5; k++) // k的范围: 2, 3, 4 if((i == j) && (j==k)) // i = j = k, only 2 Console.WriteLine(i);

A. 0 B. 1 C. 2 D. 3

9、参数传递:

(1) 参数类型为int、double等基本数据类型时,实参与形参之间进行的是值传递。

形参的变化不对实参造成影响。

【例9】请分析下面程序的输出结果 class Invoke {

void Change(int x) {

x = 3; }

public static void Main(String[] args) {

int x = 5;

Invoke e1 = new Invoke(); e1.Change(x);

Console.WriteLine(x); }

}

输出:5

(2) 当参数类型为数组,或者对象类型时,实参和形参之间进行地址传递。实参

随着形参的变化而变化。

【例10】请分析下面程序的输出结果

class Invoke {

int x;

void Change(Invoke obj) {

obj.x = 3; }

public static void Main(String[] args) {

Invoke e1 = new Invoke(); e1.x = 5; e1.Change(e1); Console.WriteLine(e1.x); } }

输出: 3

(3)当参数为基本数据类型时,要使用关键字ref才能实现地址传递。 【例11】请分析下面程序的输出结果 class Test {

public static void Main(String [] args) {

int x = 8; Change(ref x);

Console.WriteLine(x); }

static void Change(ref int x){ x += 2;

} }

输出:10

(4)输出型参数(out)用来从函数中返回结果。

10、方法重载指的是,一个类中允许出现多个同名的方法,只要参数个数或参数类型不同,编译器就认为这是两个不同的方法。

【例12】类Test1定义如下: public class Test1 {

public float aMethod(float a,float b){ return 1; } //here }

将以下哪条语句插入here处将出现编译错误( B )

A.public float aMethod(float a, float b,float c){ return 1;} B.public int aMethod(float a,float b){return 1; } C.public int aMethod(int a, int b){ return 1; }

D.private float aMethod(int a,int b,int c){ return 1; } 11、字符编码 (1)C#中使用Unicode编码表示字符。

(2)在windows中文操作系统中,使用GBK/GB2312表示字符。

【例13】判断题:在windows中文操作系统中,创建的文本文件采用的默认的编码方案为Unicode。错,是GBK/GB2312 二、面向对象程序设计

1、面向对象的基本概念。

【例1】请举例说明面向对象和面向过程思维方式的区别。 面向过程编程先确定算法,再确定数据结构。 面向对象编程先确定数据结构,再确定运算。

举例:面向过程:1.确定S矩算法。2.编写一个计算S矩额方法。3.求面积方法需要两个参数(矩形的长和宽)

面向对象:1.一个矩形可看成一个对象。2.一个矩形有两属性(长宽)和一个行为(求面积)。3.将所有矩形的共性抽取出来设一个矩形类。4.通过矩形对象行为就可以求出某个具体的矩形对象的面积。

【例2】在定义一个类的时候,良好的软件工程的做法是:将成员变量定义为private,被封装的变量通过public的setter和getter取得和设置。请简述原因。

1.可以对赋值进行合法性检查。

2.可以在用户使用格式和私有变量存储格式之间进行转换。

3.当数据的存储格式发生变化时,只需要改动get和set方法中的代码,其余代码不受影响。

4.控制变量的读写权限。

2、Object类是所有类的父类。 3、构造方法:(1)创建对象时被自动调用;(2)与类同名,不具有返回类型;(3)一旦编译器重载了构造方法后,不再自动生成不带参数的构造方法。

4、this关键字:一般用于构造函数,实例方法和实例访问器中访问成员。 5、base关键字:(1)使用base关键字引用父类的成员;(2)还可以通过base(参数列表)引用父类的构造方法。

6、 sealed关键字:(1)sealed类不能被继承;(2)sealed方法不能被重写。

【例3】判断题:在C#中,可以使用sealed关键字修饰抽象类。错,sealed不能被继承,抽象类就是用来被继承的

7、 virtual关键字:定义的方法可以被子类重写。对

8、 abstract关键字:定义的方法为抽象方法;定义的类为抽象类。对 9、 interface关键字:在C#中通过接口的定义实现多继承。对 10、引用类型转换:(1)子类对象可以当成父类对象使用;(2)父类对象只有经过强制转换后才能赋值给子类引用变量;(3)不能通过父类的引用访问子类对象新增加的成员。

【例4】设有如下类定义:

class A : Object {

public string name = \ public void Sleep() {

Console.WriteLine(\ }