C#题目合集

更新时间:2023-03-11 15:04:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

习题一

1. 在为类或方法取名时,Microsoft推荐使用的命名规范是( )

A. 随便起名字

B. Hungarian Notation

C. Camel Notation

D. Pascal Notation

2. 在C#程序中,可以作为入口函数的声明是( )

A. static int main() {?}

B. static void Main() {?}

C. static void main() {?}

D. void Main() {?}

3. 在C#程序中,不能作为入口函数的声明是( )

A. public static int Main() {?}

B. public static int Main(string args) {?}

C. static void Main(string[] args) {?}

D. public static void Main() {?}

4. 下列语句在控制台上输出的是( )

String msg = @”Hello\\nWorld!”; \\\\@--定义逐字字符串

System.Console.WriteLine(msg);

A. Hello World! B. @”Hello\\nWorld!”

C. Hello

World D. Hello\\nWorld!

5. Which of the following is not a class? ( )

A. A Ford Ikon car with the registration number XXXX

B. Fruit C. Mammal D. Fish

6. In the statement “using System;”, System is a ( ) .

A. Namespace B. Class

C. Object D. Keyword

7. Console is a ( ) .

A. Namespace B.Class

C. Function D. Escape sequence character

8. NET Framework class library的作用是( )

A. 是.NET托管程序的执行引擎 B. 供.NET托管程序使用的类型集合

C. 支持托管程序的编译程序 D. 支持.NET托管程序的操作系统

9. 在.NET编程中,术语“托管环境”是( )

A. .NET Framework类库 B. .NET公共语言运行库

C. Windows 窗体程序 D. .NET所基于的操作系统

10. The Console.ReadLine() accepts data in ( ) format.

A. char B. string C. float D. int

11. Which of the following is not an example of value type? ( )

A. string B. char C. float D. bool

12. 下面程序的运行结果为( ) .

public class SC2 {

public static void Main(string[] args) {

int a = 3;

int b = 4;

Console.Write(\ \ \

Console.Write(a + b);

Console.Write(\ \ \

Console.Write(Foo() + a + b + \ \

Console.WriteLine(a + b + Foo());

Console.ReadKey();

}

static string Foo() {

return \

} }

A. 72 34 34 foo34 34foo

B. 72 7 34 foo34 7foo

C. 9 7 7 foo34 34foo

D. 9 34 34 foo34 34foo

13. 下面代码片断的运行结果为( ) .

int m = 99;

int n = 1;

Console.WriteLine(m + n + \

A. 991 OK 991 B. 100 OK 100

C. 100 OK 991 D. 991 OK 100

14. 仔细阅读下面的代码(含注释):

int i1 = 123, i2 = 456;

float f1 = (i1+i2)* 1.2; //①× 1.2 指1.2d

double d = 1e200;

float f2 = d; //② ×

//float f2 = (float)d;

byte b1 = 67, b2 = 89;

byte b3 = b1+b2; //③× (byte)( b1 + b2)

float f3 = 1.23; //④ × 1.23 (double)

long varL1 = 0x300000000000; //⑤

float f = varL+f3; //⑥不考虑前面f3错的

long varL2 = f; //⑦;

以上带圈数字①~⑦的注释行中,变量赋值或类型转换错误的有( ) (不考虑关联,只关注类型)

A. ①②④⑥⑦

B. ②③④⑤⑦

C. ①②③④⑦

D. ①②③④⑤⑥⑦

15. 若变量k为int类型, 则下列类型转换不会损失精度的是( ) .

A. byte bx = (byte)k;

B. short sx = (short)k;

C. float fx = (float)k; //若干位表示整数(<32位),剩下表示指数

D. double dx = (double)k; //若干位表示整数(>40位),剩下表示指数

16. 若变量iLong为long类型, 则下列类型转换不会损失精度的是( ) .

A. short sx = (short)iLong;

B. float fx = (float)iLong;

C. double dx = (double)iLong;

若干位表示整数(<64位),剩下表示指数

D. 以上都不对

17. 请看如下代码:

long test(int x, float y) {

//return x; //①√

//return (long)x / y; //②×

//return (long) y; //③√

//return (int) 3.14 ; //④√

//return (y / x); //⑤×

//return (x / 7); //⑥√ }

当单独取消( )所在行的行首注释时,将会引起编译失败

A. ①或⑥

B. ②或③

C. ③或④

D. ②或⑤

习题二

1. C#中执行下列语句后,n的值为( )

int n = 0x00F0;//0..0 0000 0000 1111 000

n ^= 0x0F00; //异或: 0000 1111 0000..0

A. 0 B. 0xF00F

C. 0x0FF0 D. true //bool 与int不可转换

2. C#中执行下列语句后,n的值为( )

int n = 0x00F0; // 00?.0 1111 0000

n = ~n; //注意n 是32位的

// 11?.1 0000 1111

Console.Write(\

A. 0F B. FF0F

C. FFFFFF0F D. false

3. C#中执行下列语句后,对编译、运行结果描述正确的是(

int k = -48;

// +48 二进制 00?.00 0011 0000 或十六进制 00000030

//-48 二进制 11?. 11 1101 0000 或十六进制 FFFF FFD0

//-48>>2 二进制11 ?.11 1111 0100 或十六进制 FFFF FFF4

// +12 二进制 00?.00 0000 1100 或十六进制 0000000C

Console.WriteLine(\

<< (左移位:右边补0)

) >> (若无符号:左边补0

若带符号:左边补原来符号位)

A. FFFFFFF4, -12

B. 3FFFFFF4, 后面跟个大正数

C. FFFFFFFC, -12

D. 以上结果均不对

4. 下面的表达式中,值相等的两项是( )

① 32 / 4

③ 2 ^ 5

⑤ (2 << 1) * (32 >> 3) ⑥

A. ①和③ B. ②和④

C. ③和⑥ D. ⑤和⑥

5. 下面程序的编译、运行结果为( ) .

class Bitwise {

public static void Main(string[] args) {

int x = 11 & 9;

int y = x ^ 3;

Console.WriteLine(y | 12);

} } // Main方法和Bitwise类定义结束

A. 7 B. 8

C. 14 D. 15

6. 下面程序的编译、运行结果为( ) .

② 2 >> 5 (8 >> 2) << 4 ④ 128 >> 2 class Equals {

public static void Main(string[] args) {

int x = 100;

double y = 100.1;

bool b = (x = (int)y); //【整型与bool不兼容】

Console.WriteLine(b);

} } // Main方法和Equals类定义结束

A. True

B. 编译失败

C. False

D. 运行时抛出异常

7. 下面程序的编译、运行结果为( ) .

class Maybe {

public static void Main(string[] args) {

bool b1 = true;

bool b2 = false;

Console.Write(!false ^ false);

Console.Write(\ //改为&& ?

Console.WriteLine(\

} } // Main方法和Maybe类定义结束

A. True False False

B. True False True

C. True True True

D. True True False

8. 下面程序的编译、运行结果为( ) .

public class TestIf1 {

static bool b; //默认值false

public static void Main(string[] args) {

short hand = 42;

if(hand < 50 & !b) hand++; //第5行

if(hand > 50) ;

else if (hand > 40) {

hand += 7; //50

hand ++; //51

}

else

-- hand;

Console.WriteLine(hand);

} } // Main方法和TestIf1类定义结束

A. 41 B. 42

C. 50 D. 51

E. 编译时第5行出错

F. 编译时第6行出错

9. 下面程序的编译、运行结果为( ) .

//第6行 public class SSBool {

public static void Main(string[] args) {

bool b1 = true;

bool b2 = false;

bool b3 = true;

if(b1 & b2 | b2 & b3 | b2) // & 优先级高于 |

Console.Write(\

if(b1 & b2 | b2 & b3 | b2 | b1)

Console.WriteLine(\

} } // Main方法和SSBool类定义结束

A. ok B. dokey

C. ok dokey D. 运行时抛出异常

10. 下面程序的编译、运行结果为( ) .

public class Test {

public static void Main(string[] args) {

int x = 0;

int y = 0;

for(int z=0; z<5; z++) {

if((++x > 2) || (++y > 2)) {

x++;

}

}

Console.WriteLine(x + \ \

} } // Main方法和SSBool类定义结束

A. 8 2 B. 5 3

C. 8 3 D. 8 5

11. 分析如下代码:

1. class Crivitch {

2. public static void Main(string [] args) {

3. int x = 0;

4. // 这里插入代码

5. do { } while (x++ < y); // 11

6. Console.WriteLine(x); //12

7. } 8. }

下面( )插入到第4行,程序运行时将会输出12。

A. int y = 10; B. int y = 11;

C. int y = 12; D. int y = 13;

12. for (int k = 0; k++ < 10; ++k, k--)

Console.WriteLine(k);

针对上面这行代码, 下面说法中( ) 是正确的.

A: 导致无限循环

B: 输出k的范围是0~9;

C: 输出k的范围是1~9;

D: 输出k的范围是1~10。

15. 分析如下代码:

1. public class Barbell {

2. public int getWeight() {

3. return weight; // 体重

4. }

5. public void SetWeight(int w) {

6. if(w > 0) weight = w;

7. }

8. public int weight;

9. }

下面有关以上代码的讨论中,正确的有(

A. 类Barbell是紧密封装的

B. 第2行不符合封装性要求

C. 第5行不符合封装性要求

D. 第8行不符合封装性要求

16. 分析如下代码:

1. public class B : A {

2. private int bar;

3. public void SetBar(int b) {

4. bar = b;

5. }

) 6. }

7. class A {

8. public int foo;

9. }

下面有关以上代码的讨论中,正确的有( )

A. 类A是紧密封装的

B. 类B是紧密封装的

C. 类A和类B都是紧密封装的

D. 类A和类B都不是紧密封装的

习题三

1. If an array is declared as, int [ ] arr = new int [5], ( ) .

A. 0 B. 1 C. 2

2. 下面的数组定义语句中,( ) 是正确的。

A. int[] a = new int[4] {1, 2, 3};

B. int[] a = {1, 2, 3, 4};

C. int[] a = new int[3] {9, 2, 3, 1};

D. int[] a = new int[4];

a = {0, 1, 2, 3};

3. 下面的数组定义语句中,( ) 是正确的。

A. int aa [];

B. int bb [] = new int[3] {3, 6, 9};

the total number of elements in the array is D. 5 C. int[] cc = new int[];

D. int[] dd = new int[] {9, 2, 3, 1};

4. 下列数组初始化语句中错误的有( )

A. int[] arr1 = new int[]{0,1,2,3,4};

B. int[] arr2 = {0,1,2,3,4,5};

C. int[][] arr3 = {new int[]{0,1},

new int[]{0,1,2},

new int[]{0,1,2,3}};

D. int[][] arr4 = {{0,1},{0,1,2},{0,1,2,3}};

E. int[,] arr5 = {{0,1},{2,3},{4,5}};

不规则(二维及以上)数组需要使用new int[]产生最终的一维数组

5. The subscript number of an array starts from( ) .

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

6. 对于下面的数组定义, myArray[2][2]的值是( )

int[][] myArray = new int[3][]

{new int[3]{5,6,2},

new int[5]{6,9,7,8,3},

new int[2]{3,2}};

A. 2 B. 6 C. 9 D. 越界

System.IndexOutOfRangeException: 索引超出了数组界限。

7. If an array is declared as string [ ]arr = new string [5], the base type of the array is (

A. byte B. int C. long D. string

) 8. MyClass为一个自定义类,则下面的语句创建了( ) 个类MyClass的对象.

MyClass[,] myArray = new MyClass[2, 3];

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

9. Consider the following code:

class ArrayClass {

static void Main()

{

string[] String_Array = new string[4];

String_Array[0] = \

String_Array[1] = \

for ( int i=0; i < 2; i++ )

Console.WriteLine (\

i, String_Array[i]);

} } // Main方法和类ArrayClass定义结束

What is the output of the program? ( )

A. arr[0] = str1

arr[1] = str2

B. str1

C. str2

D. Error message is displayed.

10. 装箱、拆箱操作发生在: ( )

A.类与对象之间 B.对象与对象之间

C.引用类型与值类型之间 D.引用类型与引用类型之间

11. 下面程序的运行结果为( ) .

public class Test {

static int s;

public static void Main(string[] args) {

start();

Console.Write(s);

}

static void start() {

int x = 7;

twice(x);

Console.Write(x + \ \

}

static void twice(int x){

x = x*2;

s = x;

} } // twice方法和类Test定义结束

A. 7 14 B. 7 7 C. 14

12. 下面程序的运行结果为( ) .

public class Test {

public static void Main(string[] args) {

0 D. 14 14 start();

}

static void start() {

bool b1 = false;

bool b2 = fix(b1);

Console.WriteLine(b1 + \ \

}

static bool fix(bool b1) {

b1 = true;

return b1;

} } // fix方法和类Test定义结束

A. True True B. True

C. Flase True D. False

13. 则下面程序的运行结果为( ) .

public class PassS {

public static void Main(string[] args) {

start();

}

static void start() {

string s1 = \

string s2 = fix(s1);

Console.WriteLine(s1 + \ \

False False }

static string fix(string s1) {

s1 = s1 + \

Console.Write(s1 + \ \

return \

} } // fix方法和类PassS定义结束

A. slipstream slipstream stream B. slip stream

C. stream slip stream D. slipstream slip

14. 下面程序的运行结果为( ) .

public class PassA {

public static void Main(string[] args) {

start();

}

static void start() {

long [] a1 = {3, 4, 5};

long [] a2 = fix(a1);

Console.Write(a1[0] + a1[1] + a1[2] + \ \

Console.WriteLine(a2[0] + a2[1] + a2[2]);

}

static long[] fix(long [] a3) {

a3[1] = 7;

return a3;

stream } } // fix方法和类PassA定义结束

A. 12 15 B. 15 15

C. 345 375 D. 375 375

15. 下面程序的运行结果为( ) .

class Two {

internal byte x; }

public class PassO {

public static void Main(string[] args) {

start();

}

static void start() {

Two t = new Two();

Console.Write(t.x + \ \

Two t2 = fix(t);

Console.WriteLine(t.x + \ \

}

static Two fix(Two tt) {

tt.x = 42;

return tt;

} } // fix方法和类PassO定义结束

A. null null 42 B. 0

0 42 C. 0 42 42 D. 0 0 0

16. 下面程序的运行结果为( ) .

struct Resource{ // 【若将struct改为class, 则本题又应该选择什么??】

public int Data; }

public class Test {

public static void Main(string[] args) {

Resource[] list= new Resource[20];

for(int i = 0;i<20;i++){

Console.WriteLine(\

}

} } // Main方法和Test类定义结束

A. 打印20 行, 每行输出都是 data=0

B. 打印20 行, 每行输出都是 data=null

C. 打印20 行, 第1行输出data=0,??第20 行输出data=19

D. 出现运行时异常

17. 下面程序的运行结果为( ) .

public class InitialArrayValues {

public static void Main(string[] args) {

int[] a = new int[5];

bool[] b = new bool[5];

Console.Write(a[1] + \ \

Console.WriteLine(b[2]);

} } // Main方法和InitialArrayValues类定义结束

A. 0 Flase B. 1 True

C. 编译失败 D. 运行时抛出异常

18. 分析如下代码:

// X.cs ?本文件名

public class X {

public static void Main(string[] args) {

string[] names = new string[5];

for(int i=0; i

names[i] = args[i];

Console.WriteLine(names[2] ?? \ // names[2]改为names[8]呢?

//提示: 若运算符\左侧操作数不为null, 则

// 返回左侧变量操作数, 否则返回右侧操作数

} }

编译生成X.exe之后,运行命令”X aa bb”,输出结果会是( )

A. names B. bb

C. null D. 运行时抛出异常

19. 分析如下代码:

// X.cs ? 本文件名

public class X {

public static void Main(string[] args) {

string[] names = new string[5];

for(int i=0; i

names[i] = args[i];

Console.WriteLine(names[2] ?? \

//提示: 若运算符\左侧操作数不为null, 则

// 返回左侧变量操作数, 否则返回右侧操作数

} }

编译生成X.exe之后,运行命令”X aa bb cc”,输出结果会是( )

A. null B. bb

C. cc D. 运行时抛出异常

20. 分析如下代码:

// X.cs ? 本文件名

public class X {

public static void Main(string[] args) {

for(int i = 1; i <= args.Length; i++)

Console.WriteLine(args[i] + \ \

} }

编译生成X.exe之后,运行命令”X 1 2 3”,输出结果会是( )

A. 0 1 2 B. 1 2 3

C. null null null D. 编译失败

E. 运行时有异常抛出

21. 分析如下代码:

// X.cs ? 本文件名

public class X {

public static void Main(string[] args) {

if(args.Length == 1 | args[1].Equals(\ //运算符--”|”

Console.WriteLine(\ case \

} else {

Console.WriteLine(\ \

}

} }

编译生成X.exe之后,运行命令”X alive”,输出结果会是( )

A. test case B. production

C. test case live2 D. production live2

E. 编译失败 F. 运行时抛出异常

22. 分析如下代码:

// X.cs ? 本文件名

public class X {

public static void Main(string[] args) {

if(args.Length == 1 || args[1].Equals(\ //运算符--”||”

Console.WriteLine(\ case \

} else {

Console.WriteLine(\ \

}

} }

编译生成X.exe之后,运行命令”X alive”,输出结果会是(

A. test case B. production

C. test case live2 D. production live2

E. 编译失败 F. 运行时抛出异常

习题四

1. MyClass类的定义如下:

class MyClass { int count; string msg; }

则该类的缺省构造函数是为( )

A. internal MyClass() {} B. public MyClass() {}

C. public MyClass() {

count = 0;

msg = null; } D. 不存在

2. 分析如下程序(设已知文件名为A.cs):

class A {

int i;

)

public A(int j) { i = j; } }

class B

{ A a = new A(); }

则采用命令“csc /t:library A.cs”编译时,会( )。

A. 因为没有Main方法,所以编译失败

B. 可通过编译并生成A.exe文件

C. 可通过编译并生成A.dll文件

D. 因为A类不包含采用“0”个参数的构造函数,所以编译失败

3. Consider the following code:

class Draw {

public Draw() // line 1

{

Console.WriteLine(\

}

public void Shape() { Console.WriteLine(\

public static void Main(string[] arg) // line 2

{

Draw obj = new Draw();

obj.Draw(); // line 3

obj.Shape(); // line 4

}

} } // Main方法和类Draw定义结束

Consider the preceding code and answer the following question. Which line in the code will generate an error on compilation? ( )

A. line 1 B. line 2 C. line 3 D. line 4

4. 下列关于构造函数的描述正确的是( )

A. 构造函数可以声明返回类型。 B. 构造函数不可以用private修饰

C. 构造函数必须与类名相同 D. 构造函数不能带参数

5. 关于下面程序的编译运行情况, 描述正确的一项是( ) .

public class ThreeConst {

public static void Main(string[] args) {

new ThreeConst(4L);

}

public ThreeConst(int x) : this() {

Console.Write(\

}

public ThreeConst(long x) : this((int)x) {

Console.Write(\ \

}

public ThreeConst() {

Console.Write(\ no-arg \

} } // ThreadConst()和类ThreeConst定义结束

A. 4 B. 4 8 C. 8 4

D. 8 4 no-arg E. no-arg 8 4

6. 关于下面程序的编译运行情况, 描述正确的一项是( ) .

public class ThreeConst {

public static void Main(string[] args) {

new ThreeConst();

}

public void ThreeConst(int x) {

Console.Write(\

}

public void ThreeConst() {

Console.Write(\ no-arg \

} } // ThreadConst()和类ThreeConst定义结束

A. no-arg B. no-arg 0

C. 编译失败 D. 正常运行,但无输出

“ThreeConst”: 成员名称不能与它们的封闭类型相同;或者说,在名为Test的类中,只有(静态)构造方法名/析构方法名可以为Test,其他类成员名不能为Test,另外应该注意到,这里的ThreeConst()返回类型为void----不是构造方法!

7. 下面代码片断的编译和/或运行情况是( )。

class A {

int i;

public static void Main()

{

A a;

a.i = 2; //编译错误:使用未赋值的变量a

} }

A. 没有任何错误

B. 编译错误:使用未赋值的局部变量a

C. 编译时报NullReferenceException

D. 运行时报NullReferenceException

**8. 在C#中设计类时,应如何保证在释放对象的所有引用之前,释放对象所使用的文件、数据库连接、网络等资源?答: 可以通过( )

A. 为类重载new运算符

B. 为类重载delete运行符

C. 为类添加析构函数,在析构函数中释放资源

D. 为类实现IDisposable接口,并实现Dispose方法,在该方法中释放资源

**9. 下列代码(左边为行号)存在一个编译错误, 如何消除该错误? ( )

1 public void Test(object param) {

2 Resource r0 = new Resource(100);

3 using( Resource r1 = new Resource(100)) {

4 r1.print();

5 r1 = new Resource(50);

6 } 7 }

A. 第1 行声明的param 参数未在方法内使用, 删除该参数

B. 第3 行修改为:using( Resource r1 = new Resource(100);) {

C. 删除第5 行

D. 第5 行修改为:r1 = r0;

**10. 在类实现接口IDisposable的Dispose()方法中,一般应调用( ) 来阻止类终止器的执行。

A. GC.Collect(); B. GC.GetGeneration(this);

C. GC.ReRegisterForFinalize(this); D. GC.SuppressFinalize(this);

参考MSDN上的System.GC.SuppressFinalize以及第3章中的新增例子TestIDisposable.cs。

11. 下面程序运行后的输出结果是( ) :

class ABC {

private static int counter = 0;

static ABC() { counter++; }

public ABC() { counter++; }

public static void Main() {

ABC a1 = new ABC();

ABC a2 = new ABC();

ABC a3 = new ABC();

Console.WriteLine(counter);

} } // Main方法和类ABC定义结束

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

习题五

//============【分析下面的程序的运行结果】============ using System;

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(\ } }

//==================【分析程序的运行结果】=================== using System;

abstract class BaseClass {

public virtual void MethodA() {

Console.WriteLine(\ }

public virtual void MethodB() {

Console.WriteLine(\ } }

class Class1 : BaseClass {

public void MethodA() //有参数 string str 时结果又如何?? {

Console.WriteLine(\ }

public override void MethodB() {

Console.WriteLine(\ } }

class Class2 : Class1 {

public new void MethodB() {

Console.WriteLine(\ } }

class MainClass {

public static void Main(string[] args) {

Class2 obj = new Class2(); obj.MethodA(); } }

public override void MethodB() {

Console.WriteLine(\ } }

class Class2 : Class1 {

public new void MethodB() {

Console.WriteLine(\ } }

class MainClass {

public static void Main(string[] args) {

Class2 obj = new Class2(); obj.MethodA(); } }

本文来源:https://www.bwwdw.com/article/ggww.html

Top