发布时间 : 星期一 文章福建农林大学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(\ }