C#程序设计-复习资料

C#程序设计—复习资料


一 单项选择题
1、在C#中,下列常量定义正确的是(B)。(选择一项)
A.Const double PI 3.1415926;
B.Const double e=2.7
C.define double PI 3.1415926
D.define double e=2.7
2、以下c#代码:
using System.Threading;
class App
{
public static void Main()
{
Timer timer = new Timer(new TimerCallback(CheckStatus),null,0,2000);
Console.Read();
}
static void CheckSatus(Object state)
{
Console.WriteLine("正在进行检查...")
}
}
在使用代码创建定时器对象的时候,同时指定了定时器的事件,运行时将每隔两秒打印一行“正在运行检查...”,因此,TimerCallback是一个(A)。(选择一项)
A.委托
B.结构
C.函数
D.类名

3、在.NET中,从属性的读写特性上来进行分类,可以划分为以下三种,除了(D)。(选择一项)
A.只读属性
B.只写属性
C.读写属性
D.不可读不可写的属性

4、 阅读以下的C#代码:
public class TEApp
{
public static void ThrowException()
{
throw new Exception();
}
public static void Main()
{
try
{
Console.WriteLine("try");
ThrowException();
}
catch(Exception e)
{
Console.WriteLine("catch");
}
finally
{
Console.WriteLine("finally");
}
}
}
请问代码运行结果是(A)。(选择一项)
A.try catch finally
B.try
C.try catch
D.try finally

5、在C#中,一个类(B).(选择一项)
A.可以继承多个类
B.可以实现多个接口
C.在一个程序中只能有一个子类
D.只能实现一个接口

6、针对下面的C#代码:
using System;
class Teststring
{
public static void Main()
{
String strOriginal;
strOriginal = Console.ReadLine();
bool A = strOriginal.Equals("A");
Console.WriteLine(A.ToString());
int B = strOriginal.Length;
Console.WriteLine(B.ToString());
Console.ReadLine();
}
}
程序运行时.输入。“ AAAAA”(五个A的前面有三个空格)则程序输出为(B)
(选择一项)

A.0 8
B.False 8
C.-1 8
D.False 5

7、以下的C#代码段:
public struct Person
{
string Name;
int Age;
}
public static void Main()
{
Hasbtable A;
Person B;
//其他处理代码

以下说法正确的是(A)。(选择一项)

A.A为引用类型的变量,B为值类型的变量
B.A为值类型的变量,B为引

用类型的变量
C.A和B都是值类型的变量
D.A和 B都是引用类型的变量

8、以下的C#代码:
static void Main(string[] args)
{
Console.WriteLine("运行结果: {0}",Console.ReadLine());
Console.ReadLine();
}
代码运行结果为(D)。(选择一项)
A.在控制台窗口显示“运行结果:”
B.在控制台窗口显示“运行结果:{0}”
C.在控制台窗口显示“运行结果:,Console.ReadLine”
D.如果用户在控制台输入“ A”,那么程序将在控制台显示“运行结果:A”

9、在C#中定义一个数组,正确的代码为(B)。(选择一项)
A.int arraya = new int[5];
B.int[] arraya = new int[5];
C.int arraya = new int[];
D.int[5] arraya = new int;

10、在C#语言中,下列关于属性的描述正确的是(B).(选择一项)
A.属性系是以public关键字修饰的字段,以public关键字修饰的字段也可称为属性
B.属性是访问字段值的一种灵活机制,属性更好地实现了数据的封装和隐藏
C.要定义只读属性只需在属性名前加上readonly关键字
D.在C#的类中不能自定义属性

11、程序运行过程中发生的错误,叫作(C).(选择一项)
A.版本
B.断点
C.异常
D.属性

12、在.NET框架类库中,所有与多线程机制应用相关的类都放在(C)命名空间中。(选择一项)
A.System.SysThread
B.System.Thread
C.System.Threading
https://www.360docs.net/doc/528164159.html,Exception

13、在.NET的控件中,Panel、GroupBox、TabControl等分组控件,有时候也被称之为(A)。(选择一项)
A.容器控件
B.组合控件
C.排列控件
D.基类控件

14、阅读以下的C#代码:
class A
{
public A( )
{
Console.WriteLine("A");
}
}
class B:A
{
public B()
{
Console.WriteLine("B");
}
}
class Program
{
public static void Main()
{
B b = new B();
Console.ReadLine();
}
}
上述代码运行后,将在控制台窗口输出(C)。(选择一项)
A. A
B. B
C. A B
D.B A

15、在.NET中,以下关于命名空间的描述,正确的是(D)。(选择一项)
A.命名空间不可以进行嵌套
B.任一个.cs文件中,只能存在一个命名空间
C.便用private修饰的命名空间,其内部的类也不允许访问
D.命名空间使得代码更加有条理、结构更清晰

16、NET中,程序中的错误可以划分为以下三类,除了(D)。 (选择一项)
A.逻辑错误
B.运行时错误
C.语法错误
D.自定义错误

17、针对下面的C#代码:
using System;
delegate void D(int i);
class P
{
public static void Main()

{
V(new D(R));
}
public static void R(int t)
{
V(21);
}
public static void V(int i)
{
Console.WriteLine(i.ToString());
Console.ReadLine();
}
}
以下说法正确的是(B )(选择一项)

A.代码中存在错误,delegate voidD(int i);不能定义在名称空间或者类之外
B.代码中存在错误,代码行V(new D(R));使用委托错误
C.程序正常运行,输出为0
D.程序正常运行,输出为21


19、以下关于C#中方法重载的说法正确的是(CD)。(选择二项)
A.如两个方法名字不同,而参数的数量不同,那么它们可以构成方法重载
B.如两个方法名字相同,而返回值的数据类型不同,那么它们可以构成方法重载
C.如两个方法名字相同,而参数的数据类型不同,那么它们可以构成方法重载
D.如两个方法名字相同,而参数的数量不同,那么它们可以构成方法重载

20、在C#语法中,在派生类中对基类的虚函数进行重写,要求在声明中使用(A)关键字。(选择一项)
A.override
B.new
C.static
D.virtual

21、在.NET中,Hashtable类所在的命名空间是(C)(选择一项)
A.System.Threadint
B.System.IO
C.System.Collections
D.System

22、在C#中,可以通过装箱和拆箱实现值类型与引用类型之间相互转换,在下列代码中,
有(B)处实现了拆箱。(选择一项)
int age = 5;
object o= age;
o=10;
age=(int)o;
object oAge =age;
A.0
B.1
C.2
D.3

23、在C#中,下列代码的运行结果是(B) . (选择一项)
int[]num =new int[]{1,3,5};
ArrayList arr=new ArrayList();
for(int i=0;i{
arr.Add(num[i]);
}
arr.Insert(1,4);
Console.Write(arr[2]);
A.1
B.3
C.4
D.5

24、C#中关于委托,下面说法正确的是(AD)。(选择两项)
A.委托是一种类的成员
B.委托必须定义在类中
C.定义委托需要使用delegate关键字
D.委托是一种数据类型

25、下列关于C#的异常处理的说发法,错误的是(BC)。(选择二项)
A.Try块必须跟catch块组合使用,不能单独使用
B.一个try块可以跟随多个catch块
C.使用throw语句既可引发系统异常,也可以引发由开发人员创建的自定义异常
D.在try … catch …..finally块中,即便开发人员编写强制逻辑代码,也不能跳出finally块的执行

26、在.NET中,一些数据类型为引用类型,当引用类型的值为(B)时,表明没有引用任何对象。(选择一项)
A.Empty
B.null
C.Nothing
D.0

27、在C#中,接口与抽象基类的区别在于(D)。(选择一项)
A.抽象基类可以包含非抽象方法,而接口

只能包含抽象方法
B.抽象基类可以被实例化,而接口不能被实例化
C.抽象基类不能被实例化,而接口可以被实例化
D.抽象基类能够被继承,而接口也能被继承


29、列表视图ListView的View属性的默认值为(A)
A、大图标LargeIcon
B、小图标SmallIcon
C、详细资料Details
D、列表List

30、在WinForm窗体中,放置了一个PictureBox 控件PictureBox1,在设置PictureBox1控件的Image 属性后,当图片与控件的大小不一致时,可以通过如下代码(A)使PictureBox1控件的大小与图片大小保持一致。(选择一项)
A.this.PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
B.this.PictureBox1.SizeMode = PictureBoxSizeMode.Normal;
C.this.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
D.this.PictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;

31、在.NET中,文本框控件的(A)属性用来设置其是否是只读的。(选择一项)
A.ReadOnly
B.Locked
C.Lock
D.Style

32、WinForm中,在界面上绘制矩形、弧、椭圆等图像对象,可以使用System.Drawing命名空间的(B)类来实现。(选择一项)
A.Brush
B.Pen
C.Color
D.Image

33、在.NET的WinForms程序中,可以使用(C)对象来连接和访问数据库。(选择一项)
A.MDI
B.JIT
https://www.360docs.net/doc/528164159.html,
D.System.ADO

34、在WinForm应用程序中,可以通过以下(C)方法使一个窗体成为MDI窗体。(选择一项)
A.改变窗体的标题信息
B.在工程的选项中设置启动窗体
C.设置窗体的IsMdiContainer属性
D.设置窗体的ImeMode属性

35、WinForms程序中,如果复选框控件的 Checked属性值设置为 True,表示(A)。(选择一项)
A.该复选框被选中
B.该复选框不被选中
C.不显示该复选框的文本信息
D.显示该复选框的文本信息

36、在C#中,下列代码的运行结果是(D)。(选择一项)
int [] num = new int[5]{1,3,2,0,0};
Array.Reverse(num);
foreach(int i in num){
Console.Write(i);
}
A.00123
B.12300
C.00132
D.00231

37、在C#中,(c)访问修饰符修饰的变量只能由当前程序集访问。
A.public
B.protected
C.internal
D.private



42、在WinForms中,为了防止用户无意关闭窗体,需要在(A)事件中编写代码,提示用户是否关闭窗体。(选择一项)
A.Closing
B.Closed
C.Load
D.VisibleChanged


44、在C#中,关于Array和ArrayList的维数,以下说法正确的是(A)。(选择一项)
A. Array可以有多维,而ArrayList只能是一维
B.Array只能是一维,而 ArrayList可以有多维
C.Array和 ArrayList 都只能是一维
D. Array和ArrayList都可以是多维

45、在C#中,下列代码运行后,变量Max的值是(C)(选择一项)int a=5,b=10,c=15,Max=0;
Max = a>b?a:b;
Max = cA.0
B.5
C.10
D.15

46、在Win

forms窗体中,有一名为txtUser的TextBox控件,其MaxLength属性为5,该控件的当前文本为“网络编程”,若再执行代码: txtUser.AppendText(“高手”);则控件的文本为(C)。(选择一项)
A.网络编程
B.网络编程高
C.网络编程高手
D.出现运行时错误



49、在.Net中,关于CLR和IL,以处描述正确的是()(选择一项)
A.应用程序在CLR环境被编译成IL,IL将能够被任何计算机指令性集成
B..应用程序被编译两次,第一次生成IL,IL在运行时候被CLR快速编译
C.应用程序被编译两次,但是第二次CLR编辑比第一次慢
D.借取CLR,IL被编译成机器代码并且能够在不同的计算机指令集下被执行

50、CLR为.NET提供以下方面的功能或者服务.除了()。(选择一项)
A.无用存储单元收集
B.代码验证和类型安全
C.代码访问安全
D.自动消除程序中的逻辑错误
52. C#程序从上机到得到结果的几个操作步骤依次是( )。
A. 输入、编辑、运行
B. 编译、连接、运行
C. 输入、运行、编辑
D. 编辑、编辑、连接
53. 以下标识符中不全是关键字的是( )。
A. case for int
B. default then while
C. bool class long
D. goto unit char
54. 能作为C#程序的基本单位是( )。
A. 字符 B. 语句 C. 函数 D. 源程序文件
55. 一个C#程序的程序入口点是( )。
A. main B. MAIN C. Main D. 任意标识符
56. 可用作C#程序用户标识符的一组标识符是( )。
A. void define +WORD
B. a3_b3 _123 YN
C. for -abc Case
D. 2a DO sizeof
57. 设”int a=13;”,则执行完语句”a+=a*a;”后,a的值是( D )。
A. 39 B. 169 C. 156 D. 182
58. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式 的表达式是( )。
A. 1.0/a*b*c B. 1/(a*b*c) C. 1/a/b/(float)c D. 1.0/a/b/c
59. 设x是一个bool型的逻辑量,y的值为10,则表达式 x && y的值为( )。
A. 1 B. 0 C. 与x值相同 D. 与x值相反
60. x>0 && x<=10的相反表达式为( )。
A. x<=0 || x>10 B. x<=0 && x>10
C. x<=0 || x<=10 D. x>0 && x>10

二、 简答题
1、简述 private、 protected、 public、 internal 修饰符的访问权限。
答 . private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。
2、C#中的委托是什么?事件是不是一种委托?
答:
委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的引用。
是,是

一种特殊的委托
3、override与重载的区别
答:
override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要
Override 是进行基类中函数的重写。为了适应需要。

4、请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
答:
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb= System.Windows.Forms.TextBox)control;
tb.Text = String.Empty ;
}
}
4、GC是什么? 为什么要有GC?
答:GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
5、String s = new String("xyz");创建了几个String Object?
答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对像s。
6、abstract class和interface有什么区别?
答:
声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽像类,并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们也是抽像类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
7、构造器Constructor是否可被override?
答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
8、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
答:会执行,在return前执行。
9、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
答:Set里的元素是不能重复的,那么用ite

rator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对像equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
10、数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。String有有length()这个方法。
11、谈谈final, finally, finalize的区别。
答:
final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为 final的方法也同样只能使用,不能重载
finally-再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize-方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对像从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对像之前对这个对象调用的。
12、堆和栈的区别?
答:栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。
堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。
13、error和exception有什么区别?
答:error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
14、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。
15、
16、
17、
18、
19、
20、

三、程序阅读题
1.写出以下程序运行结果。
using System;
class Test
{
public static void Main ()
{
int[] a ={2,4,6,8,10,12,14,16,18};
for (int i=0; i<9; i++) {
Console.Write(" "+a[i]);
if ((i+1)%3==0) Console.WriteLine();
}
}
}

2.写出以下程序运行结果。
using System;
class Test
{
public static void Main ()
{
String str = "abcdabcabfgacd";
int i1=0,i2

=0;
for (int i = 0; i < str.Length; i++ )
{
if (str[i] == 'a') i1++;
if (str[i] == 'b') i2++;
}
Console.WriteLine(i1+ " " + i2);
}
}

3.写出以下程序运行结果。
using System;
class Test
{
public static void Main ()
{
int s = 0;
int i;
for (i = 1; ; i++)
{
if (s > 50) break;
if (i % 2 == 0) s += i;
}
Console.WriteLine("i,s=" + i + "," + s);
}
}

4.写出以下程序运行结果。
using System;
class Test
{
public static void Main ()
{
int i, j;
for (i = 0; i < 3; i++)
{
for (j = 0; j <= i; j++) Console.Write("*");
Console.WriteLine();
}
}
}


5.写出以下程序运行结果。
using System;
class Test
{
static void LE(ref int a, ref int b)
{
int x = a;
a = b; b = x;
Console.WriteLine(a + " " + b);
}
public static void Main()
{
int x = 10, y = 25;
LE(ref x, ref y);
Console.WriteLine(x + " " + y);
}
}

6.写出以下程序运行结果。
using System;
class Test
{
static int LB(ref int[] a,int n) {
int s=1;
for (int i=0; is*=a[i];
return s;
}
public static void Main () {
int[] a = {1,2,3,4,5,6,7,8};
int b = LB(ref a,5) + LB(ref a,3);
Console.WriteLine (“b = “ +b);
}
}

7、写出以下程序运行结果
public static void Main () {
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
Console.WriteLine (“i={0},j={1} “,i,j);
}

8、在下面的例子里
using System;
class A
{
public A()
{
PrintFields();
}
public virtual void PrintFields() { }
}
class B : A
{
int x = 1;
int y;
public B()
{
y = -1;
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}", x, y);
}
}

class Program
{
public static void Main()
{
B b = new B();
Console.Read();
}
}

9、
class A
{
public static int X;
static A()
{
X = B.Y + 1;
}
}
class B
{
public static int Y = A.X + 1;
static B() { }
static void Main()
{
Console.WriteLine("X={0},Y={1}", A.X, B.Y);
}
}
产生的输出结果是什么?

10、写出下列程序的运行结果。
using System;
class Calculate
{
static int number1 = 0;
public void Display(int number)
{ Console.WriteLine(number);}
Calculat

e()
{
number1++;
Display(number1);
}
static void Main(string[] args)
{
Calculate Cal1 = new Calculate();
Calculate Cal2 = new Calculate();
}
}
11、写出下列程序的运行结果。
class Prograf
{
public static void Main()
{
SortedList s1 = new SortedList();
s1["c"] = 41;
s1["a"] = 42;
s1["d"] = 11;
s1["b"] = 13;
foreach (DictionaryEntry element in s1)
{
String s = (string)element.Key;
int i = (int)element.Value;
Console.WriteLine("{0},{1}", s, i);
}
}
}

12、写出下列程序的运行结果。
public abstract class A
{
public A()
{ Console.WriteLine("A"); }
public virtual void Fun()
{ Console.WriteLine("A.Fun()"); }
}
public class B : A
{
public B()
{ Console.WriteLine("B"); }
public new void Fun()
{ Console.WriteLine("B.Fun()"); }
public static void Main()
{
A a = new B();
a.Fun();
Console.Read();
}
}





四、编程题(20分)

1、如:打印出2至99之间的所有素数(即不能被任何数整除的数)。
2、课后练习题及课本例子。
3、其它




三、
1、
2 4 6
8 10 12
14 16 18

2、
4 3

3、
i,s=15,56

4、
*
**
***

5、
25 10
25 10

6、
b= 126

7、
i=13,j=10

8、
x=1,y=0

9、
X=1,Y=2

10、
1
2

11、
a,42
b,13
c,41
d,11

12、
A
B
A.Fun()



相关文档
最新文档