admin 管理员组

文章数量: 1086019


2024年3月26日发(作者:多条件vlookup函数的使用)

252、数组在访问之前必须初始化。(√)

253、数组元素的访问是从1开始,到Length结束;(×)

254、如果使用的整数索引小于0,或者大于数组的大小,编译器将抛出一个

IndexOutOfRangeException异常;(√)

255、对数组元素的所有访问都要进行边界检查(√)

256、开发人员不需要创建MessageBox类的实例,只需调用Show()方法既可显示

消息框√

257、ListBox控件用于显示一个选项列表,用户每次只能从中间选择一项(×)

258、如果实现重写,在基类的方法中必须使用virtual关键字,在派生类的方法

中必须使用overrides关键字。(×)

259、用Interval属性设置Timer控件Tick事件发生的时间间隔单位为秒。(×)

260、一个窗体可以有多个弹出式菜单。(√)

261、在C#中,装箱操作是将引用类型转化成值类型。(×)

262、.NET包含两个部分:公共语言运行库和类库。(√)

263、在定义数组时不允许为数组中的元素赋值。(×)

264、定义枚举时至少为其中的一个枚举成员赋值(×)。

265、接口和类相同是面向对象程序设计的核心,是创建对象的模板。(√)

266、委托是将方法作为参数传递给另一方法的一种数据类型,事件与委托没有联

系。(×)

267、如果不带修饰符,C#中类成员被默认声明成public。(×)

268、构造函数和方法都可以进行重载。√

269、任何运算符都可以进行重载 (×)

270、重载是继承的形式之一(×)

271、在面向对象编程的思想中,类是相同或者相似对象的抽象。√

272、静态类和实例类的区别在于:静态类不需要初始化即可直接使用,实例类需

要进行实例化,生成对象才可使用。√

273、菜单项标题中有含有带下划线的字符,这是快捷键。(×)

274、在C#中,子类不能继承父类中用private修饰的成员变量和成员方法。√

275、.在C#中,所有类都是直接或间接地继承类而得来的。√

276、函数是C#程序的基本单位。(×)

277、在类作用域中能够通过直接使用该类的任何成员名进行访问。√

278、C#语言中,值类型包括:基本值类型、结构类型和枚举类型。√

279、C#语言中,值类型包括:基本值类型、结构类型和整数类型。(×)

280、salary属于C#语言的关键字。(×)

281、在C#中,接口可以被多重继承而类不能。√

282、接口中的成员不可以有访问域修饰符,但可以有其它修饰符。×

283、在C#中,装箱操作是将值类型转化成引用类型√

284、任何事物都是对象。√

285、析构函数是自动调用的,它也可以被显式调用。×

286、用ref修饰符声明的形参是引用形参。√

287、用out修饰符声明的形参是输出形参。√

288、从用户的角度看,变量是存储信息的基本单元,在变量中可以存储各种类型

事物信息√

289、如果在try块之后没有任何catch块,那么finally块也是可选的。×

290、当创建派生类对象时,先执行基类的构造函数,后执行派生类的构造函数。

291、如果基类没有默认的构造函数,那么其派生类构造函数必须通过base关键

字来调用基类的构造函数。√

292、对象与对象之间的关系可以分为三类:包含、继承和关联。√

293、在C# 2005编程环境中,int32型变量可以直接隐式的转换成char型变量。

×

294、“+,-,*,/,%”均属于三元运算符。×

295、属性就是实体特征的抽象,比如,对象猫可以有重量,身长等属性。√

296、在同一行代码或同一段语句中,等于运算符的优先级别高于关系运算符。√

297、.NET Framework运行环境除了支持和C#两种编程语言,还支持Perl、

C++.NET、J#、、ActionScript。×

298、在C#中可以使用String作为变量名,但不能使用string作为变量名。√

299、在C#中,每个方法都必须定义为类或结构的成员。√

300、在一个程序内,不可以包含2个及以上的Main方法。√

四、读程序写结果和看程序填空

1、

{

static void Main(string[] args)

{

Tiger t = new Tiger();

();

class Program

}

}

class Animal

{

public Animal()

{ ("基类"); }

}

class Tiger : Animal

{

public Tiger()

{ ("派生类");}

}

程序的运行结果是_____基类派生类______________

2、 class Program

{

static void Main(string[] args)

{

Elephant e = new Elephant("abc");

ne();

}

}

public class Animal

{

public Animal()

{

("基类默认构造函数!");

}

public Animal(string s)

{

("非默认构造函数");

}

}

public class Elephant : Animal

{

public Elephant()

{

("派生类构造函数!");

}

public Elephant(string str)

: base(str)

{

(str);

}

}

程序的运行结果是______非默认构造函数abc __________

3.在Main方法中需要调用Display方法,按照要求填空

class Program

{

static void Main(string[] args)

{

A1 a = new A1(); //创建A1类的对象a

ine(y());

ne();

}

}

class A1

{

public string Display()

{

return "hello everyone!";

}

}

4、 下列程序完成了调用静态方法和实例方法,补充空白处并写出运行结果

class Program

{

static void Main(string[] args)

{

Example e1 = new Example();

1();

2(); //调用meth2()

ine("a={0},b={1}",e1 .a ,Example .b);

ne();

}

}

class Example

{

public int a;

static public int b;

public void meth1()

{

a = 10;

b = 20;

}

public static void meth2()

{

b = 30;

}

程序的输出结果是_________a=10,b=30_______________

5、 class Program

{

static void Main(string[] args)

{

s s1 = new s();

s t1 = new s();

ne();

}

}

public class s

{

public s()

{ ("构造函数!");}

static s()

{Console .Write ("静态构造函数!");}

}

程序的运行结果是_____静态构造函数!构造函数!构造函数!

__________________

6、 class Program

{

static void Main(string[] args)

{

Person p = new Person();

p.N = "www";

ine(p.N );

ne();

}

}

public class Person

{

private string p_name="abc";

public string N

{

get { return p_name; }

set { p_name = value; }

}

}

程序最终的输出结果是_www__

7、class Program

{

static void Main(string[] args)

{

B b = new B();

A a = b;

a.G();

b.G();

();

}

}

class A

{

public virtual void G()

{

("A.G!");

}

}

class B : A

{

public override void G()

{

("B.G!");

}

}

程序的输出结果是___ B.G!B.G!__________________________

8、 下列程序完成了输出数组中的最大值和最小值,请补充程序中的空白处

class Program

{

static void Main(string[] args)

{

MyClass m = new MyClass();

int[] s ={ 1, 6, 4, 7, 3, 87, 5 };

int smax, smin;

(s, out smax, out smin);

ine("smax={0},smin={1}",smax ,smin );

ne();

}

}

class MyClass

{

public void MaxMin(int[] a, out int max, out int min)

{

max = min = a[0];

for (int i = 1; i < ; i++)

{

if (a[i] > max) max = a[i];

if (a[i] < min) min = a[i];

}

}

}

9、 下列程序完成了调用静态方法和实例方法,补充空白处并写出运行结果

class Program

{

static void Main(string[] args)

{

Example e1 = new Example();

1();

2();

ine("a={0},b={1}",e1 .a ,Example .b);

ne();

}

}

class Example

{

public int a;

static public int b;

public void meth1()

{

a = 10;

b = 20;

}

public static void meth2()

{

b = 30;

}

程序的输出结果是____ a=10,b=30_________________

10、class Program

{

static void Main(string[] args)

{

Triangle t = new Triangle(3, 4);

double s = ();

ine("area is {0}",s);

ne();

}

}

class Shape

{

protected double width;

protected double height;

public Shape()

{

width = height = 0;

}

public Shape(double w, double h)

{

width = w;

height = h;

}

public virtual double area()

{

return width * height;

}

}

class Triangle : Shape

{

public Triangle(double x, double y)

: base(x, y)

{ }

public override double area()

{

return width * height / 2;

}

}

程序的输出结果是____area is 6____________________

11、class Program

{

static void Main(string[] args)

{

Point p1 = new Point();

Point p2 = new Point(3, 4);

ine("p1.x={0},p1.y={1}", p1.x, p1.y);

ine("p2.x={0:f},p2.y={1}", p2.x, p2.y);

ne();

}

}

class Point

{

public double x = 0, y = 0;

public Point()

{

x = 1; y = 1;

}

public Point(double a, double b)

{

x = a;

y = b;

}

}

程序最终的输出结果是___ p1.x=1,p1.y=1

p2.x=3,p2.y=4 __

12、class Program

{

static void Main(string[] args)

{

Triangle t = new Triangle(3, 4);

double s = ();

ine("area is {0}",s);

ne();

}

}

class Shape

{

protected double width;

protected double height;

public Shape()

{

width = height = 0;

}

public Shape(double w, double h)

{

width = w;

height = h;

}

public virtual double area()

{

return width * height;

}

}

class Triangle : Shape

{

public Triangle(double x, double y)

: base(x, y)

{ }

public override double area()

{

return width * height / 2;

}

}

程序最终的输出结果是_ area is 6__

13、class Program

{

static void Main(string[] args)

{

MyClass m = new MyClass();

int a, b, c;

a = 0; b =20; c = 10;

(ref a, ref b, ref c);

ine("a={0},b={1},c={2}",a,b,c);

ne();

}

}

class MyClass

{

public void sort(ref int x, ref int y, ref int t)

{

int tmp;

if (x > y) { tmp = x; x = y; ;y = tmp; }

if (x > t) { tmp = x; x = t; t = tmp; }

if (y > t) { tmp = y; y = t; t = tmp; }

ine("{0},{1},{2}", x, y, t);

}

}

程序的输出结果是_____ a=0,b=10,c=20 ______________________

14、 class Program

{

static void Main(string[] args)

{

MyClass m = new MyClass();

int[] s ={ 34, 23, 65, 67, 54, 98, 6, 56 };

(s);

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

{

Console .Write("{0}",s [i]);

}

Console .ReadLine ();

}

}

class MyClass

{

public void Array(int[] a)

{

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

{

a[i] = i;

}

}

}

程序最终的输出结果是01234567 _

15、class Program

{

enum Season : int

{

Spring,

Summer ,

Autumn,

Winter

}

static void Main(string[] args)

{

Season s = (Season)2;

ine(s);

();

}

}

程序的输出结果是________ Autumn ________________

16、class Program

{

static void Main(string[] args)

{

int i = 0, sum = 0;

do

{

sum++;

}

while (i > 0);

ine("sum = {0}", sum);

}

}

程序的运行结果是_________ sum = 1________________

17、static void Main(string[] args)

{

int x = 123;

object obj1=x;

x = x+100;

ine (" obj1= {0}" , obj1 );

}

程序的输出结果是_________ obj1=123___________

18、下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请

填空。

static void Main(string[] args)

{

int j;

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

{

j = i * 10 + 6;

if (i % 10 !=6&&j%3!=0)

Continue;

("t{0}",j);

}

();

}

19、using System;

class Program

{

static void Main(string[] args)

{

int m, n, i, j, max = 0;

ine("请输入m,n的值");

m = 32(ne ());

n = (ne());

if (m < n)

i = m;

else

i = n;

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

if (m % j == 0 && n % j == 0)

{

max = j;

break;

}

ine("max={0}", max);

ne();

}

}

若分别从键盘输入8和6,则程序的运行结果是__ max=2___________________

20、static void Main(string[] args)

{

int Sum = 0;

for (int i = 1; i <= 10; i++)

{

if (i % 2 == 0)

Sum += i;

}

ine(Sum);

}

程序的输出结果是____30______

21、 static void Main(string[] args)

{

int m, n,i;

int[] a = new int[6]{1,2,5,3,9,7};

m = n = a[0];

for (i = 1; i < 6; i++)

{

if (a[i] > max) m = a[i];

if (a[i] < min) n = a[i];

}

ine("{0}, {1}",m,n );

ne();

}

程序最终的输出结果是________9,1___________

22、class Program

{

static void Main(string[] args)

{

for (int i = 1; i <= 10; i++)

{

(i);

if (i % 5 == 0)

ine();

else

('t');

}

}

}

程序的运行结果是_______1 2 3 4 5

6 7 8 9

10__________________

23、static void Main(string[] args)

{

int Sum = 0;

for (int i = 1; i <= 10; i++)

{

if (i % 2 == 1)

Sum += i;

}

ine(Sum);

}

程序的输出结果是_______25___________

24、 static void Main(string[] args)

{

int a=2, b=7, c=5;

switch (a > 0)

{

case true :

switch (b < 10)

{

case true: ("^"); break;

case false: ("!"); break;

}

break;

case false :

switch (c == 5)

{

case false: ("*"); break;

case true: ("#"); break;

}

break;

}

();

}

程序最终的输出结果是___ ^___

25、 static void Main(string[] args)

{

try

{

int x = 32(ne());

int y = 32(ne());

int z = x / y;

}

catch (FormatException)

{

ine("格式不符");

}

catch (DivideByZeroException)

{

ine("除数不能是0");

}

catch (Exception)

{

ine("Exception!");

}

finally

{

ine("thank

program!");

}

ne();

}

若分别从键盘上输入5和x,则程序的最终执行结果是格式不符

thank you for using

the program!

26、 class Program

{

static void Main(string[] args)

{

Taxi t = new Taxi();

ine(ialized );

ne();

}

}

public class Taxi

you for using the

{

public bool isInitialized = false;

public Taxi()

{

isInitialized = true;

}

}

程序最终的输出结果是___ True __

27、 class Program

{static void Main(string[] args)

{

Mouse m = new Mouse();

();

();

}

}

public abstract class Animal

{ public abstract void Sleep();

public virtual void Eat()

{ ("eat something"); }

}

public class Mouse : Animal

{ public override void Sleep()

{ ("mouse sleeping!");}

public override void Eat()

{ ("eat cheese!");}

}

程序的输出结果是_______ eat cheese! mouse sleeping!

_____________________

28、 class Program

{

static void Main(string[] args)

{

SharedClass sc = new SharedClass();

aA("interface IpartA");

ne();

}

}

public interface IpartA

{

void SetDataA(string dataA);

}

public class SharedClass : IpartA

{

private string DataA;

private string DataB;

public void SetDataA(string dataA)

{

DataA = dataA;

ine("{0}", DataA);

}

}

程序最终的输出结果是interface IpartA _

29、 static void Main(string[] args)

{

int m, n, i, j, s= 0;

ine("请输入m,n的值");

m = 32(ne ());

n = (ne());

if (m < n)

i = m;

else

i = n;

for (j = i; j > 0; j++)

if (j % m == 0 && j % n == 0)

{

s = j;

break;

}

ine("{0}", s);

}

若从键盘上分别输入4和6,则程序最终的输出结果是______12________

30、static void Main(string[] args)

{

int[] pins = { 9, 3, 7, 2 };

for (int index = 0; index != ; index++)

{

int pin = pins[index];

}

foreach (int i in pins)

{

(i);

}

}

程序的输出结果是____________________________

31、分析一下C#代码,根据面向对象的多态性,代码的运行结果是__B___________

class A{

public void F(){

}

(“A”);

Public void F(string chr)

{

}

}

class B:A

{

Public void F(){

}

Static void Main()

{

B objB=new B();

objB.F();

}

}

32、分析如下C# 代码,根据类的继承关系,运行后的输出结果是___不得入内 未

成年人___

public class Person

{

(“B”);

Console .Write(“B”);

private int age=0;

public int Age

{

get{return age;}

set

{

If(value>=18)

ine(“成年人”);

Else

}

ne(“未成年人”);

}

}

public class People:Person

{

public People()

{

(“不得入内”);

}

}

class Test

{

static void Main (string[]args)

{

}

people shang=new People();

=17

}

33、阅读下面程序,请确定枚举成员的关联值。

enum Color:uint

{

Red,

Green=3,

Blue,

Max=Blue

}

(1) 枚举成员Red的关联值为(0)

(2) 枚举成员Green的关联值为(3)

(3) 枚举成员Blue的关联值为(4)

(4) 枚举成员Max的关联值为(4)。

34、写出以下程序的运行结果。___57__

using System;

class Test

{

public static void Main()

{

int x = 5;

int y = x++;

(y);

y=++x;

(y);

}

}

35、写出下列函数的功能。若A>B则返回1,若A==B则返回0,若A

static int SA(int a,int b)

{

if (a>b)

return 1;

else if (a==b)

return 0;

else

return -1;

}

36、写出以下程序运行结果。9 12 15

using System;

class Test

{

static int[] a = { 1, 2, 3, 4, 5, 6, 7, 8 };

public static void Main()

{

int s0, s1, s2;

s0 = s1 = s2 = 0;

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

{

switch (a[i] % 3)

{

case 0: s0 += Test.a[i]; break;

case 1: s1 += Test.a[i]; break;

case 2: s2 += Test.a[i]; break;

}

}

ine(s0 + " " + s1 + " " + s2);

}

}

37、写出以下程序的运行结果。

2 4 6

8 10 12

14 16 18

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++) {

(“ ”+a[i]);

if ((i+1)%3==0) ine();

} }

}

38、写出以下程序运行结果。i,s=15,56

using System;

class Test

{

public static void Main ()

{

int s=0,i;

for (i=1; ; i++) {

if (s>50) break;

if (i%2==0) s+=i;

}

ine ("i, s=" + i + "," + s);

} }

39、 写出下列程序的运行结果。

static void Main(string [ ] args)

{

string[] words = new string[ ] { “a”,”b”,”c”};

foreach ( string word in words)

{

ine(word);

}

}

答: ______a

b

c_____________

40、 完善如下程序: 键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)

的个数并将三者输出。

int i;

int num;

int zeroNum = 0;

int ___ZengNum=0;_________

int FuNum = 0;

for (i = 1; i <= 10; i++)

{

ine("请输入第{0}个整数",i);

string strTemp = ne();

num = ___32(strTemp);_______

if (num > 0)

{

ZengNum++;

}

else if (num == 0)

{

zeroNum++;

}

else

{

FuNum++;_

}

}//for_end

ine("正数:{0}、负数: {1}、 零:{2}", ZengNum, FuNum,

zeroNum);

41、下列代码的功能是要遍历整个数组并将其显示出来,但是有一行代码是错

误的。请检查下列代码,并在错误代码行后填入该行完整的正确代码:

1). static void Main(string [] args)

2). {

3). string [ ] myArray = new string[ ] { “C#”, “C++”,

“VB”, “java” };

4). for(int i = 1; i< -1; i++)

5). {

6). ine(myArray[i]);

7). }

8). }

答: 第__4__行错误。

应改为___ for(int i = 0; i< ; i++) ____________

42、 完善如下程序:求5的阶乘并输出

int mul= 1 ;

for(int i=1;i<=5;i++)

{

mul*=i;

}

ine(___mul__________);

43、 说明本程序的功能。___求数组中的最大值________________

int[] nums = new int[3];

int max = ue;

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

{

string strTemp = ne();

nums[i] = (strTemp);

}

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

{

if (nums[i]>max)

{

max=nums[i];

}

}

ine(max);

44、void main()

{

int k=2,i=2,m;

m=(k+=i*=k);

ine(“{0},{1}”,m,i);

}

输出结果______6,4___________。

45、 void main()

{

char grade='C';

switch(grade)

{

case 'A':

ine(">=85.");

break;

case 'B':

ine(">=70.");

break;

case 'C':

ine(">=60.");

break;

case 'D':

ine("<60.");

break;

default:

ine("error.");

break;

}

}

输出结果_______>=60.__________。

46、 说明本程序的功能。

int num;

int sum=0;

int avg=0;

for(int i=1;i<=10;i++){

{ ine("请输入第{0}个整数",i);

string strTemp=ne();

num=(strTemp);

sum=sum+num;

}

avg = sum / 10;

ine("平均数值={0}",avg);

答: _____求从键盘输入的10个整数的平均值______________

47、完善如下程序:打印输出平方值小于20000的最大整数。

int i=0;

while(___i*i_________<20000)

{

i++;

}

ine(_____i________);

48、 下列程序的作用是求出所有的水仙花数。(所谓水仙花数是指这样的数:

该数是三位数,其各位数字的立方和等于该数)

using system;

class Example1

{

static void Main(string[] args)

{

int a, i, b, c, t;

for (i = 100; i <= 999; i++)

{

t = i;

a = t % 10; t = t / 10; b = t % 10; c = t / 10;

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

ine("i={0}", i);

}

ne();

}}

49、public class TEApp{

public static void ThrowException(){

throw new Exception();

}

public static void Main(){

try{

ine(“try”);

ThrowException();

}

catch(Exception e){

ine(“catch”);

}

finally{

ine(“finally”);

}

}

}上述C#代码运行结果是(try

catch

finally)

50、分析如上的C#代码段,运行后将输出老师的名字叫小明

学生的名字叫小明

public class Teacher{

public Teacher (string name){

ine(“老师的名字叫”+ name);

}

}

public class Test:Teacher{

public Test(string name){

ine(“学生的名字叫”+ name);

}

}

static void Main(string[] args)

{ Test t=new Test(“小明”);}

51、class Test{

static void Main(){

try{

int a = 10;

int b = 0;

int c = a / b;

ine(c);

}

catch{

ine(“出现错误”);

}

finally{

}

}

}在C#中,上述代码的运行结果是出现错误

运行结束

52、下列程序是输出100以内所有能被7整除的数,请将程序补充完整。

using System;

ine(“运行结束”);

class Output

{ static void Main()

{for (int k=1;k<=100;___k++______ )

{if (k%7!=0) ;

____continue;________

(_____k_______);}} }

53、写出下列函数的功能。求出从键盘上输入的一批常数的平均值,以-1作为结

束输入的标志。

static float FH() {

float y=0,n=0;

int x = 32(ne()); //从键盘读入整型数

据赋给x

while (x!=-1) {

n++; y+=x;

x = 32(ne());

}

if (n==0)

return y;

else

return y/n;

}

54、写出以下程序运行结果。 25 10

25 10

using System;

class Test

{

static void LE(ref int a, ref int b) {

int x = a;

a = b; b = x;

ine (a + “ “ +b);

}

public static void Main ()

{

int x=10, y=25;

LE(ref x, ref y);

ine (x + “ “ +y);

}

}

55、阅读以下的C#代码:下述代码运行后,将在控制台窗口输出 A

B

class A

{

public A( )

{ ine("A"); }

}

class B:A

{

public B()

{ ine("B"); }

}

class Program

{

public static void Main()

{

B b = new B();

ne();

}

}

56、class Program

{

static void Main(string[] args)

{

Person p = new Person();

p.N = "www";

ine(p.N );

ne();

}

}

public class Person

{

private string p_name="abc";

public string N

{

get { return p_name; }

set { p_name = value; }

}

}

程序最终的输出结果是_________www____________________

57、static void Main(string[] args)

{

try

{

int x = 32(ne());

int y = 32(ne());

int z = x / y;

}

catch (FormatException)

{ine("格式不符");}

catch (DivideByZeroException)

{ ine("除数不能是0");}

catch (Exception)

{ine("Exception!");}

finally

{

ine("thank you

program!");

}

ne();

}

若分别从键盘上输入5和x,则程序的最终执行结果是

58、程序执行后,m的值是 0

public int which(int k)

{

int x=0;

Switch(k){

case 1: x=10;break;

case 2: x=15;break;

}

return x;

}

for using the

……

int m=which(5);

59、在C#中,下列代码的运行结果是(022)。

public class Student

{

public static int Add(int a,int b)

{

}

static void Main()

{

}

int a=0;

int b=2;

int c = Add(a,b);

(a);

(b);

(c);

a++;

b++;

return a+b;

60、在C#中,下列代码的运行结果是(-5 )。

public class Test

{

static void Main()

{

}

static int showInfo(int a,int b,string op)

{

}

if(op=="+")

return a+b;

int i= showInfo(5,10,"-");

ine(i);

if(op=="-")

return a-b;

return a*b;

61、分析下列程序的功能,并指出运行结果。

using System;

public class array1

{

public static void Main( )

{

int [ ] a={34,91,83,56,29,93,56,12,88,72};

int i,t=0,temp=100;

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

if(a[i]

{

temp=a[i]; t=i;

}

ine(“{0} {1}”,temp,t);

}

}

运行结果: 12 7 .

62、写岀下面程序的运行结果 050055

class Program

{

static void Main(string[] args)

{

Class1 c1 = new Class1();

Class1.y = 5;

();

Class1 c2 = new Class1();

();

ne();

}

}

public class Class1

{

private static int x = 0;

public static int y = x;

public int z = y;

public void output()

{

(Class1.x);

(Class1.y);

(z);

}

}

63、运行结果:

static void Main(string[] args)

{

int x = 9;

.

ine((x--) + (x--) + (x--));

ine(x);

int y = (--x) + (--x) + (--x);

ine(y);

ine(x);

ne();

}

64、程序的最终运行结果是110 150 199 30 18

static void Main(string[] args)

{

int[] myArray = { 110, 150, 199, 30, 18};

for (int i = 0; i != - 1;i++ )

{

AddArray(myArray[i]);

}

foreach (int i in myArray)

{

ine(i);

}

}

public static void AddArray(int num)

{ num += 1; }

65、下面代码是要显示My string, 请分析下列代码段并在空白行补全C#代码:

static void Main(string[] args)

{

string myString = "My string";

char[] myChars = Array();

foreach (_____char character in myChars___________)

{

ine("{0}",character);

}

y();

}

66、请写出该段代码的运行结果:____ False

2____

abstract class BaseClass

{

public virtual bool MethodA()

{

return true;

}

public virtual string MethodB()

{

return "0";

}

}

class Class1:BaseClass

{

public override bool MethodA()

{

return false;

}

public override string MethodB()

{

return "1";

}

}

class Class2:Class1

{

new public string MethodB()

{

return "2";

}

}

class MainClass

{

public static void Main(string[] args)

{

Class2 o = new Class2();

Class2 q = new Class2();

ine(A());

ine(B());

}

}

67、 程序运行的最终结果是Microsoft Studio Visual

using System;

class Program

{

private class IntIndexer

{

private string[] myData;

public IntIndexer(int index)

{

myData = new string[index];

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

myData[i] = "Microsoft";

}

public string this[int pos]

{

get

{

return myData[pos];

}

set

{

myData[pos] = value;

}

}

}

static void Main(string[] args)

{

int size = 3;

IntIndexer myIndex = new IntIndexer(size);

myIndex[2] = "Visual";

myIndex[1] = "Studio";

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

(myIndex[i] + " ");

}

}

68、下面的程序是实现一个方法可以接受n个不相等的参数。在空白行补全。

using System;

class Program

{

private static void Test( params string[] strArray)

{

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

{

(strArray[i] + " ");

}

ine();

}

static void Main(string[] args)

{

Test("One", "Two", "Three");

Test("Monday","Tuesday","Wednesday","Thursday","Friday");

}

}

69、分析下列程序段: 程序运行的输出结果是sum = 1

using System;

class Program

{

static void Main(string[] args)

{

int i = 0, sum = 0;

do

{

sum++;

}

while (i > 0);

ine("sum = {0}", sum);

}

}

70、下面的程序完成的是:从输入串中找出所有的字母,并把这些字母转换成大

写,然后输出到终端。请分析下列代码段, 并在空白行补全Visual C#代码。

using System;

class Program

{

static void Main(string[] args)

{

string inputString = ;

string result = ;

inputString = ne();

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

{

if (inputString[i] >= 'a' ___&&___ inputString[i] <= 'z')

result += inputString[i].ToString().ToUpper();

if (inputString[i] >= 'A' && inputString[i] <= 'Z')

________ result += inputString[i]_________________;

}

ine("字母有: " + result);

}

}

五、简答题

1.一个完整的C#控制台程序包括哪些必要的组成部分?

Properties:属性。在AssemblyInfo中可以设置应用程序的版本号、作者等

信息。

引用:默认情况下项目引用了System、和3个命名

空间,这3个命名空间包括了最常见的类和函数。

:项目默认建立的,是项目的运行入口。

2.有哪些主要的数据类型?它们之间是怎样进行相互转换的?

值类型包括整数类型、字符类型、浮点类型、布尔类型、结构类型和枚举类

型。引用类型包括类、接口、委托、数组、字符串等。

C#中提供了隐式类型转换和显式类型转换。

3.类和对象的区别和关系是什么?

类是对象的抽象,它为属于该类的全部对象提供了统一的抽象描述。它是对

象的模板,对象是类的实例。

4.静态字段与非静态字段有什么区别?

加static修饰字段时,则该字段为静态字段,静态字段不属于某个实例对象,

只与类相关联,因此,对静态字段的访问只与类关联,访问时使用类名.字段,实

例字段的访问与实例对象关联,访问时使用对象名.字段。

5.接口声明主要由几部分组成,各部分的作用是什么?

接口声明形式:访问修饰符 interface 接口名

其中:接口的访问修饰符有new、public、protected、internal和private,

各个修饰符都代表不同的访问权限。new修饰符仅允许在类中定义的接口内使用,

它指定接口隐藏同名的继承成员。public、protected、private和internal修饰

符用于控制接口的可访问性,与前面所介绍的意义相同。接口名称通常以I开头。

要实现该接口,必须有类继承该接口。

6.在某些场合中,使用接口继承而不是类继承,为什么?

程序需要许多彼此无关的对象类型来提供特定功能,此时更适合使用接口

接口可以在基类不同的类之间实现多态性

接口比基类更加灵活,因为可以定义实现多个接口的单个实现

若不需要从基类继承实现,则接口是更好的选择

若不能使用类继承,则可以使用接口

7.什么是异常?异常有什么作用?

异常是错误的一种,它的结果是导致程序不能正确运行,如系统崩溃、程序

非正常退出、死循环等。当抛出异常后,程序将不正常终止。但是,如果能很好

的在程序中俘获异常并处理异常,可以增强程序的健壮性。

8.C#中处理异常采用的结构化异常处理语句有哪些?并简要说明。

C#中共包含3种结构化异常处理语句:try…catch语句,try…finally语句

和try…catch…finally语句。其中:try块语句中用来指明有可能出现异常的代

码;catch块内指明对所出现的异常的处理,若没有异常,则catch块不执行;

finally块是无论是否发生异常均要执行的代码,主要用来清理资源或执行要在

try块末尾执行的其它操作,或不需要清理代码,则可以不使用该块。

9.类的声明的一般形式是什么?

类的声明形式:[类的访问修饰符] class 类名[:基类]{ 类成员 }

最简单的声明类的语法为: class 类名 {类成员}

10.什么是继承?

继承是这样的一种能力,它可以使用现有类的所有功能,并且在无须重新编

写原来的类的情况下对这些功能进行扩展。使用继承而产生的类被称为派生类或

子类,被继承的类称为基类或父类。

11.什么是多态性?

继承使得在原有的类基础之上,对原有的程序进行扩展,从而提高程序开发的

速度,实现代码的复用。同一种方法作用于不同对象可以产生不同的结果,这就

是多态性。C#中的多态包括两类:编译时多态性和运行时的多态性。

12.C#定义了哪几种类的访问修饰符?

public 可以被任意存取

protected只可以被本类和其继承子类存取

internal只可以被本组合体(Assembly)内所有的类存取,组合体是C#语言

中类被组合后的逻辑单位和物理单位,其编译后的文件扩展名往往是“.DLL”或

“.EXE”。

protected internal唯一的一种组合限制修饰符,它只可以被本组合体内所

有的类和这些类的继承子类所存取。

private只可以被本类所存取。

de与重载的区别

14. 重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同

的需要;

15. override 是进行基类中函数的重写。为了适应需要。

16.什么是装箱和拆箱?

17. 从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。

15.面向对象的思想的三个基本特征?

封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在

抽象数据类型内部。

继承:子类拥有父类的所有数据和操作。

多态:一个程序中同名的不同方法共存的情况。。

修饰符有什么特点

sealed 修饰符可以应用于类、实例方法和属性。密封类不能被继承。密封方

法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方

法或属性时,sealed 修饰符必须始终与 override一起使用。

17.根据get和set访问器是否存在,属性可以分成哪几种类型?

对于属性,如果只设置get访问器,则为只读属性,若只设置set访问器,

则为可写属性,两个访问器均存在时,为既可读又可写属性。

18.属性主要用于哪些情况?

C#中提供了属性来实现安全性。C#通过属性特性读取和写入字段,而不直接

进行字段的读取和写入,以此来保护类中的字段。属性是类内部封装性的体现。

19.类所包含的成员种类有哪几种?

类的成员包括常量、字段、方法、构造函数、属性、事件、索引等。

20.C#方法有哪4种类型的参数?

(1)普通参数是指在声明方法时,形参前不加任何修饰的参数。若传递的是

值类型的参数,则进行值传递,若是引用类型,则进行引用传递。

(2)引用类型参数(ref)。在值类型参数前加上关键字ref,表明实参与形

参的传递方式是引用的,对形参的修改会影响实参的值。

(3)输出型参数(out)。与ref相似,该参数为引用类型参数。不同之处在

于ref要求变量在作为参数传递之前必须要进行初始化,而out无需进行初始化。

当希望方法返回多个值时,声明out方法是很有用。

(4)数组型参数(params)。有时希望能够传递任意个数的参数,使程序更加

灵活,比如求2个数的和、3个数的和以及求一个数组各个元素的和,计算方法类

似,可以通过一个方法实现,在方法中传递不同个数的参数即可。C#提供了params

参数来实现这个功能。params可以使用个数不定的参数调用方法。

21.如何区别重载方法?

不同的参数类型;不同的参数个数;不同的参数顺序.

22.索引器与属性的主要差别是什么?

索引器与属性类似,可以使用get和set块定义索引元素的读写权限,与属

性不同的是,索引器有索引参数。

23.构造函数有哪些特征?

(1)函数名与类名相同;(2)没有返回值类型;(3)系统自动调用

24.什么是装箱和拆箱?

从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。

25.结构化异常处理捕获异常的原则是什么?

先捕获特殊异常,再捕获普通异常。

26.简述变量的命名规则?

由数字、字母和下划线组成,不能以数字开头,不能是关键字。

27.简述C#中编译时的多态性和运行时多态性的区别。

编译时的多态性是通过我们前面所介绍的方法重载来实现的。运行时的多态是

指直到系统运行时,才根据实际情况决定要实现何种操作。C#中运行时的多态性

是通过虚方法来实现的。

28.什么是构造函数的重载?

构造函数中可以没有参数,也可以有一个或多个参数,多个参数之间用“,”

隔开。一个类中可以有一个或多个构造函数,这表明在类中可以有多个函数名相

同、但参数类型不同或者参数个数不同的构造函数,这叫构造函数重载。

29.简述类和结构的区别。

类的声明和结构的声明非常类似,只是限定符后面是 struct 还是 class 的

区别,而且使用时,定义新的结构和定义新的类的方法也非常类似。类和结构的

具体区别为:(1)结构是值类型,类是引用类型。(2)结构不能从另外一个结构

或者类继承,本身也不能被继承,而类是完全可扩展的,自身也能被继承。(3)

结构没有默认的构造函数,但是可以添加构造函数,没有析构函数;类有默认的

构造函数,也有析构函数。

30.什么是抽象类和密封类?

抽象类用abstract修饰,能够包含抽象成员。抽象类不能直接实例化,也不

能被密封,只能作为其它类的基类。密封类用sealed修饰,不能用作基类。因此,

它也不能是抽象类。密封类主要用于防止派生。

31.如何声明基类虚方法,并在派生类中重载基类虚方法?

定义虚方法要用到virtual关键字。如果在派生类中要重写基类的方法,需

要用override关键字。

32.什么是委托?委托与C/C++的函数指针有何不同?

函数指针用指针获取一个函数的入口地址,实现对函数的操作。委托与函数

指针不同,委托是引用类型,是面向对象的,在使用时要先定义后实例化,然后

再调用。委托可以在运行时间接调用一个或多个方法。

33.什么是多播委托?

一个委托只与一个方法关联,称为单路广播委托,也可以将一个委托与多个方

法关联,称为多路广播委托,简称多播委托。多播委托通过使用“+”把方法加入

执行队列。只调用一个委托就可以完成对多个方法的调用,并且传递给委托的参

数会传递到委托所包含的每一个方法。

34.什么是事件?

事件作为C#的一种类型,主要为类和类的实例定义发出通知的能力,从而将

事件和可执行代码捆绑在一起。事件最常见于窗体编程,如点击按钮事件、鼠标

移动事件等等。

35.如何在程序中定义和使用自定义事件?

(1)首先,必须在类中声明事件并确定将要使用的委托和参数。

(2)其次,必须定义在触发事件时要调用的委托。

(3)最后,必须设计事件参数类,该参数类的实例会将信息传递给被调用的

方法。如果使用内置的EventArgs对象和EventHandler委托,则可以不执行该步

骤。

36.面向对象程序设计的特征是什么?

面向对象程序设计(OOP)通过类、对象、继承、多态等机制形成一个完善的

编程体系。OOP将程序设计中的数据与对数据的操作作为一个不可分割的整体,通

过由类生成的对象来组织程序。

37.对象的方法与对象的事件方法有何异同?

两者都是用一段代码完成特定的功能。事件方法代码是由用户添加的,事件

方法由事件的发生而被自动调用;对象的方法代码是系统预定义的,对用户是隐

藏的,不可见的,而且对象的方法必须在代码中调用。

38.C#集成开发环境中主要有哪些窗体?

C#集成开发环境中主要有起始页、设计器视图与代码视图、解决方案资源管

理器与类视图、工具箱与服务器资源管理器、属性与动态帮助等。

39.简述按钮、标签和文本框控件的作用。

按钮控件通常用来接收用户的操作信息,激发相应的事件,按钮是用户与程

序交互的最简便的方法。标签控件的主要功能是输出信息,可以用来标识其他无

法显示标题的控件。文本框控件用于数据的输入与输出,文本框中的文本在程序

运行时,可以被用户编辑。

40.命名空间有什么作用?

命名空间既是Visual 提供系统资源的分层组织方式,也是分层

组织程序的方式。命名空间有两种:一种是系统命名空间,一种是用户自定义命

名空间。

41.C#有几种表达式?根据什么确定表达式的类型?

在C#中,基本表达式有5种:算术表达式、关系表达式、逻辑表达式、条件

表达式和赋值表达式.表达式的类型由运算符的类型决定。

语句控制表达式可以是哪几种数据类型?

Switch语句控制表达式所允许的数据类型为:整数类型、字符类型、字符串

类型或者枚举类型,可以能够隐式转换成上述类型的其他类型。

43.单选按钮与复选框控件各有什么作用?

RadioButton控件即单选按钮,提供由两个或两个以上互斥选项组成的选项

集。它支持勾选和不勾选两种状态,在文字前用一个可以勾选的圆点来表示,用

户只能在一组选项中选择一项。CheckBox控件即复选框控件,通常用来设置选项,

用户可以一次选择任意数量的复选框。

44.简述值类型与引用类型的区别。

值类型变量直接包含其本身的数据,因此每个值类型变量本身就包含有赋给

它的值。引用类型变量本身不包含数据,只是存储对数据的引用,数据保存在内

存的其他位置。

45.基类中的字段通常使用什么类型的访问修饰符,为什么?

在类的继承中,作为基类的数据成员通常使用protected修饰符,而不使用

private修饰符。因为如果在基类中使用private修饰符声明数据成员,则其成员

将不允许派生类成员访问,而使用protected修饰符,既能保证数据成员不被直

接访问,又允许其派生类成员访问。

46.什么是数组?数组最适合在哪种情况下使用?

在C#中,把一组具有同一名字、不同下标的下标变量成为数组。实际应用中,

往往会遇到具有相同属性的一批数据,此时,应该考虑使用数组来管理或处理这

些有规律的数据。数组是引用类型。

47.自定义的数据类型包括哪些?它们有什么作用?

自定义数据类型包括结构和枚举,结构和枚举都属于值类型。结构类型可以

用来处理一组类型不同、内容相关的数据。枚举类型是由用户定义的一组整型符

号常量,使用枚举可以将一组相关的有限常量组织在一起,保证变量只能具有预

订的值。

48.实际应用中,菜单分为哪两种形式?C#中设计主菜单使用哪种控件?

实际应用中,菜单分为主菜单和弹出式菜单(上下文菜单)。通常使用

MenuStrip控件实现主菜单设计。

49.简述文本文件与二进制文件的区别。

文本文件中字节单元的内容为字符的代码,在二进制文件中,文件内容是数

据的内部表示,是从内存中直接复制过来的。两者对于字符信息无差别,而对于

数值信息,数据的内部表示和字符代码截然不同。二进制文件中的数据不需要进

行转换,文本文件中的数据需要进行转换。

50.简述已连接环境与非连接环境的区别与优缺点。

已连接环境是指应用程序和数据库之间保持连续的通信,优点是能及时刷新

数据库,安全性较高,缺点是需要固定的数据库连接,不宜多个用户共同使用同

一个数据库,扩展性差。非连接环境是指应用程序能够在与数据库断开的情况下

进行操作,优点是应用程序可以随时连接到数据库获取相应的信息,缺点是获得

的数据可能不是最新的,并且对数据更改时可能引发冲突,因为在某一时刻可能

有多个用户同时对统一数据操作。

51.何谓数据绑定技术?

所谓数据绑定技术就是把已经打开的数据集中某个或者字段绑定到组件的某

些属性上的一种技术,就是把已经打开的数据的某个或者某些字段绑定到

TextBox、ListBox、ComboBox等组件能够显示数据的属性上,当对组件完场数据

绑定后,其显示字段的内容将随着数据记录指针的变化而变化。

52.事件是一种委托吗?为什么?

事件不是委托,不过由于事件的性质决定了处理它的程序逻辑能访问的参数,

因此,在C#中处理事件的逻辑都包装为委托。

53.列举中的五个主要对象,并简单描述

Connection连接对象,Command执行命令和存储过程,DataReader向前只读

的数据流,DataAdapter适配器,支持增删查询,DataSet数据级对象,相当于内

存里的一张或多张表。

关键字用法

(1)new运算符 用于创建对象和调用构造函数。

(2)new修饰符 用于向基类成员隐藏继承成员。

(3)new约束 用于在泛型声明中约束可能用作类型参数的参数的类型。

55.C#中,string str = null与string str ="",请尽量用文字说明区别。

string str =""初始化对象分配空间,而string str=null初始化对象

56.C#中的接口和类有什么异同。

异:不能直接实例化接口。接口不包含方法的实现。接口、类和结构可从多

个接口继承。但是C#只支持单继承:类只能从一个基类继承实现。类定义可在不

同的源文件之间进行拆分。

同:接口、类和结构可从多个接口继承。接口类似于抽象基类:继承接口的

任何非抽象类型都必须实现接口的所有成员。接口可以包含事件、索引器、方法

和属性。一个类可以实现多个接口。

57.接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实

体类?

接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,

但是有个条件,条件是,实体类必须要有明确的构造函数。

58.用最有效的方法算出2乘以8等于几?

2<<3.

59.数组有没有Length()这和方法?string有没有这个方法?

数组中没有这个方法,但有这个属性,string中有这个方法。

de, Overload,的区别?

Override是重写的意思,它表示重写基类的方法,而且方法的名称,返回类

型,参数类型,参数个数要与基类相同。Overload是重载是意思,它也表示重写

基类的方法,但是只要方法名相同,别的可以不同。

61.C#种索引器实现过程,是否只能根据数字索引?

不是的,可以是任意类型。

和ReadOnly?

Const用来声明编程时常量,ReadOnly用来声明运行时常量。

63.在.NET中所有类的基类是?

Object

64..NET中读写数据库需要用到那些类?他们的作用?

65. DataSet:数据存储器;DataCommand:执行语句命令;DataAdapter:数据的

集合,用于填充。

66.成员变量和成员函数前加static的作用?

67. 它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。

分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函

数负责这种统计的动作。

68.什么是中的用户控件?

69. 用户控件一般用在内容多为静态,或者少许会改变的情况下..用的比较

大..类似ASP中的include..但是功能要强大的多。

70..NET的错误处理机制是什么?

71. .net错误处理机制采用try->catch->finally结构,发生错误时,层层上

抛,直到找到匹配的Catch为止。

相对于ADO等主要有什么改进?

73. 1:不依赖于ole db提供程序,而是使用.net托管提供的程序,2:

不使用com3:不在支持动态游标和服务器端游 4:,可以断开connection而保留当

前数据集可用 5:强类型转换 6:xml支持

74.&和&&的区别。

75. &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).

s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

77. short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换

类型)

78. short s1 = 1; s1 += 1;(可以正确编译)

79..<%# %> 和 <% %> 有什么区别?

80. <%# %>表示绑定的数据源;<% %>是服务器端代码块.

81.如何理解.net中的垃圾回收机制?

.NET中的垃圾回收机制是引用程序对内存的回收和释放。当每次用new关键

字创建一个对象时,运行库都要从托管堆中为其分配内存,因为空间是有限的,

最终垃圾回收机制是要回收不用的内存的。已释放内存,重新使用。

与stack的差别?

Heap是堆,空间是由手动操作分配和释放的,它的存储区很大的自由存储区。

Stack是栈,是由是操作系统自动分配和释放的,栈上的空间是有限的。程序

在编译期间变量和函数分配内存都是在栈上进行的,且在运行时函数调用时的参

数的传递也是在栈上进行的。

{}里有一个return语句,那么紧跟在这个try后的finally {}里的code

会 不会被执行,什么时候被执行,在return前还是后?

84. 会执行,在return前执行。

85.如何处理几十万条并发数据?

86. 用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量

方 式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过

程来获取.

与ASP相比,主要有哪些进步?

88. 答:asp解释形,aspx编译型,性能提高,有利于保护源码。

ader和DataSet的异同

90. DataReader使用时始终占用SqlConnection,在线操作数据库..任何对

SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内

存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性

能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..

91. DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即

放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...

但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更

新操作.

92.存储过程和sql语句的优缺点

优点:1)提高性能,减少网络传输,节约时间。2)减少网络流量。存储过

程位于服务器上,调用的时候只须传递存储过程的名称以及参数,不用每次访问

都传递很长的sql语句。3)安全性。减少sql注入式攻击。4)可维护性高。更

新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。

缺点:1.交互性差。2.可移植性差

93.怎样实现多态?

1.通过对象直接调用成员函数时,始终默认使用该对象的类的成员函数(除

非用::显示指定类名)。

2.通过指向对象的指针或引用调用成员函数时:如果该函数是实函数,则调

用该指针或引用的类的成员函数;如果该函

3.数是虚函数,则调用该指针或引用指向的对象的类的成员函数。

80.何时必须声明一个类为抽象类?

当这个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。

81.为什么不能指定接口中方法的修饰符?

接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保

护没有意义。他们默认为公有方法。

82.虚函数的用法

1)virtual指明一成员函数为虚函数,而virtual仅用于类的定义里,在类外

可不加此关键字

2)一个类的成员函数被定义为虚函数时,子类该函数仍保持虚函数特征.

3)子类覆盖此函数时,定义里可不加virtual关键字,但函数声明要和基类的

完全一致!且此声明是必须的.

4)不是纯虚函数时,父类的虚函数必须要实现; 而若将父类的虚函数设定为

纯虚函数时,子类必需要覆盖之而且必须要实现之!

83.解释virtual、sealed、override和abstract的区别

virtual声明虚方法的关键字,说明该方法可以被重写; sealed说明该类不

可被继承;override重写基类的方法;abstract声明抽象类和抽象方法的关键字,

抽象方法不提供实现,由子类实现,抽象类不可实例化。

84.能够将非静态的方法覆写成静态方法吗?

不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual

改为override。

与out区别?

1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方

法中对其完成初始化。2、使用ref和out时,在方法的参数和执行方法时,都要

加Ref或Out关键字。以满足匹配。3、out适合用在需要retrun多个返回值的地

方,而ref则用在需要被调用的方法修改调用者的引用的时候。

86.如何在C#中实现继承?C#支持多重继承吗?

在类名后加上一个冒号,再加上基类的名称。不支持。可以用接口来实现。

87.私有成员会被继承吗?

会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实

被继承了。

88.在C#中,string str = null 与 string str = “” 的区别。

string str = null 是不给他分配内存空间,而string str = "" 给它分配长

度为空字符串的内存空间。

te是引用类型还是值类型?enum、int[]和string呢?

delegate引用类型,enum值类型,int[]引用类型,string引用类型。

90.请指出C#中是否有下列关键字?virtual、sealed、abstract、import、as、

in、goto、final、Const、signed、String

没有的关键字:import、final、Const、signed、String

是C#的关键字吗?请指出C#中有哪些类型关键字,如int、float。(提

示,写得越多越好)。

是,object、int、uint、long、ulong、short、ushort、byte、sbyte、char、

float、double、decimal、bool,如回答:enum、struct、class、delegate也算

对。

92.62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等

式成立,如何移动?

62移动成2的6次方

s = new String("xyz");创建了几个String Object?

两个对象,一个是“xyx”,一个是指向“xyx”的引用对象。

94.命名空间的作用?

主要包括了组成体系结构的类

95.什么叫泛型 (generics)?

使用泛型,可以定义使用类型参数定义的和/或方法。当客户端代码实例化类

型时,会指定一个特定的类型作为参数。

是什么意思?

extern 修饰符用于声明由程序集外部实现的成员函数 经常用于系统API函

数的调用(通过 DllImport )。注意,和DllImport一起使用时要加上 static 修

饰符 也可以用于对于同一程序集不同版本组件的调用(用 extern 声明别名) 不

能与 abstract 修饰符同时使用。

ct 可以和 virtual 一起使用吗?可以和 override 一起使用吗?

abstract 修饰符不可以和 static、virtual 和 override 修饰符一起使用

有什么用?

params 关键字在方法成员的参数列表中使用,为该方法提供了参数个数可变

的能力 它在只能出现一次并且不能在其后再有参数定义,之前可以

99.C#是否可以对内存直接进行操作?

C#是可以对内存进行直接操作的,虽然很少用到指针,但是C#是可以使用指

针的,在用的时候需要在前边加unsafe,,在.net中使用了垃圾回收机制(GC)

功能,它替代了程序员,不过在 C#中不可以直接使用finalize方法,而是在析

构函数中调用基类的finalize()方法。

100.怎么理解封装性?举例说明。

封装是指用一个框架将数据和代码组合在一起,形成一个对象。一般情况下,

数据都是被封装起来的,不能直接被外部访问。C#中,类是支持对象封装的工具,

对象则是封装的基本单元。举例略。

六、编程题

1、求数组中的最大值和最小值并输出。

static void Main(string[] args)

{

int max, min;

int[] a = new int[10] { 1, 34, 5, 9, 23, 59, -9, 0, 40, 22 };

max = a[0];

min = a[0];

for (int i = 1; i < ; i++)

{

if (max < a[i])

max = a[i];

if (min > a[i])

min = a[i];

}

ine("最大值为{0}", max);

ine("最小值为{0}", min);

ne();

}

}

2、声明一个数组,将一年中的12个月的英文存入其中。当用户输入月份的数

字时,打印出月份的英文。若输入0则退出,并提供输入信息不合法提示,如下:

请输入月份数,若输入0则退出:(输入2,显示February)

2

February

static void Main(string[] args)

{

string[] month ={ "Jan", "Feb", "Mar", "Apri", "May",

"June", "July", "Aug", "Sep", "Oct", "Nov", "Dec" };

ine("请输入月份:");

int m = 32(ne());

if (m == 0)

{

ine("月份出错");

}

else

ine(month[m - 1]);

ne();

}

3、从键盘上输入一个整数,判断其奇偶性。

static void Main(string[] args)

{

int t = 32(ne());

if (t % 2 == 0)

ine("输入的数是偶数");

else

ine("输入的数是奇数");

ne();

}

4、判断从键盘上输入字符串的首字符是字母、数字或是其它字符。

static void Main(string[] args)

{

string s = ne();

char[] c = Array();

if (c[0] >= '0' && c[0] <= '9')

ine("首字符为数字!");

else

if ((c[0] >= 'a' && c[0] <= 'z') || (c[0] >= 'A' & c[0]

<= 'Z'))

ine("首字符为字母!");

else

ine("首字符为其它字符!");

ne();

}

1 x>1

5、使用嵌套if实现如下函数y= 0 x=0 。

-1 x<1

static void Main(string[] args)

{

int x = 32(ne());

int y = 0;

if (x >= 0)

if (x > 0)

y = 1;

else

y = 0;

else

y = -1;

ine("y的值是:{0}", y);

ne();

}

6、输入两个数和运算符,根据运算符进行相应的操作并输出结果。

static void Main(string[] args)

{ string op;

double d1, d2, result = 0;

ine("请输入第1个操作数:");

//将从键盘上输入的字符串转换成double类型

d1 = le(ne());

ine("请输入运算符:");

op = ne();

ine("请输入第2个操作数:");

d2 = le(ne());

switch (op)

{

case "+": result = d1 + d2; break;

case "-": result = d1 - d2; break;

case "*": result = d1 * d2; break;

case "/": result = d1 / d2; break;

default: ine("输入的不是合法的运算符

"); break;

}

ine("{0}{1}{2}={3}", d1, op, d2, result);

ne();

}

7、使用while语句求1到100中的奇数和。

static void Main(string[] args)

{

int i=1, sum = 0;

while (i <= 100)

{

sum += i;

i+=2;

}

ine("1-100的奇数和为{0}", sum);

ne();

}

8、使用do…while语句求1到100中的奇数和。

static void Main(string[] args)

{

int i = 1, sum = 0;

do

{

sum += i;

i += 2;

} while (i <= 100);

ine("1-100的奇数和为{0}", sum);

ne();

}

9、使用for循环实现1-100中的奇数和。

static void Main(string[] args)

{

int i , sum = 0;

for (i = 1; i <= 100; i += 2)

sum += i;

ine("1-100的奇数和为{0}", sum);

ne();

}

10、使用for循环输出乘法小九九。

static void Main(string[] args)

{

for (int line = 1; line <= 9; line++)

{

for (int i = 1; i <= line; i++)

{

(ng() + "*" + ng() + "=" + (i *

line).ToString() + " ");

}

ine();

}

ne();

}

11、使用foreach语句实现求数组中元素的最大值。

static void Main(string[] args)

{

int[] a ={ 12, 32, 4, 6, 98, 35, 78, 69 };

int max = a[0];

foreach (int x in a)

{

if (x > max)

max = x;

}

ine("数组中的最大值为{0}", max);

ne();

}

12、求2个数的最大公约数。

static void Main(string[] args)

{

int m, n, i, j, max = 0;

ine("请输入m的值:");

m = (ne());

ine("请输入n的值:");

n = (ne());

if (m < n)

i = m;

else

i = n;

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

if (m % j == 0 && n % j == 0)

{

max = j;

break;

}

ine("最大公约数是:{0}", max);

ne();

}

13、求2个数的最小公倍数。

static void Main(string[] args)

{

int m, n, i, j, min = 0;

ine("请输入m的值:");

m = (ne());

ine("请输入n的值:");

n = (ne());

if (m > n)

i = m;

else

i = n;

for (j = i; ; j++)

if (j % m == 0 && j % n == 0)

{

min = j;

break;

}

ine("最小公倍数是:{0}", min);

ne();

}

14、输出1-100中所有不能被3整除的数。

static void Main(string[] args)

{

for (int i = 1; i <= 100; i++)

{

if (i % 3 != 0)

continue;

else

(" "+i);

}

ne();

}

15、求1-100的和,但不包括个位数为3的数。

static void Main(string[] args)

{

int sum = 0;

for (int i = 1; i <= 100; i++)

{

if (i % 10 == 3)

continue;

else

sum += i;

}

ine("和是" + sum);

ne();

}

16、从键盘输入一个数,输出它的绝对值。

static void Main(string[] args)

{

ine("从键盘上输入一个数");

int m = 32(ne());

if (m % 2 == 0)

ine("输入的是偶数");

else

ine("输入的是奇数");

ne();

}

17、编程实现显示100-200之间不能被3整除的数的程序。

static void Main(string[] args)

{

for (int i = 100; i <= 200; i++)

{

if (i % 3 != 0)

(i + " ");

}

ne();

}

18、编程实现判断某一年是否是闰年。

static void Main(string[] args)

{

int year=32(ne ());

if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)

ine("是闰年");

else

ine("不是闰年");

ne();

}

19、编程实现对3个数降序排列。

static void Main(string[] args)

{

int a = 12, b = 10, c = 18;

int t;

if (a > b)

{

t = a; a = b; b = t;

}

if (a > c)

{

t = a; a = c; c = t;

}

if (b > c)

{

t = b; b = c; c = t;

}

ine("{0},{1},{2}", a, b, c);

ne();

}

20、有十个数放入数组中,用户输入一个数值,找出这个数值在本数值中的序号,

如果没有输出“不存在”!

static void Main(string[] args)

{

int[] a ={ 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };

ine("从键盘上输入一个数:");

int t = 32(ne());

int i;

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

{

if (t == a[i])

break;

}

if (i == 10)

ine("不存在这个数");

else

ine("所在位置是{0}", i + 1);

ne();

}

21、键盘输入十个数值,统计输出大于等于平均数的数值。

static void Main(string[] args)

{

int[] a = new int[10];

int sum = 0 ;

double avg;

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

{

a[i] = 32(ne());

sum += a[i];

}

avg = sum / 10.0;

ine("平均值是{0}", avg);

ine("大于平均值的数如下:");

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

if (a[i] > avg)

ine(a[i]);

ne();

}

22、已知有5个元素的数组a,请用冒泡排序法将其排序。

static void Main(string[] args)

{

int[] a ={ 1, 4, 5, 2, 0 };

int t;

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

for (int j = 0; j < 4 -i; j++)

if (a[j] > a[j + 1])

{

t = a[j];

a[j] = a[j + 1];

a[j + 1] = t;

}

foreach (int k in a)

ine(k);

ne();

}

23、输出1-100 之间不能被6整除的全部数字。

static void Main(string[] args)

{

for(int i=1;i<=100;i++)

if ( i % 6 != 0)

{

(i+"t");

}

ne();

}

24、编程输出1-100之间能够被3整除但不能被5整除的数,并统计共有多少个

这样的数。

static void Main(string[] args)

{

int count = 0;

for(int i=1;i<=100;i++)

if (i % 3 == 0 && i % 5 != 0)

{

(i+"t");

count++;

}

ine();

ine("共有{0}个", count);

ne();

}

25、编程求100以内能够被7整除的最大自然数。

static void Main(string[] args)

{

for(int i=100;i>0;i--)

if (i % 7 == 0)

{

ine(i);

break;

}

ne();

}

26、求斐波那契(Fibonacci)数列的第 10 项,已知该数列的前两项都为 1,即

F(1)=1,F(2)=1; 而后各项满足:F(n)=F(n-1)+F(n-2)。

static void Main(string[] args)

{

ine("第10项是" + f(10));

ne();

}

static int f(int n)

{

int r;

if (n == 1 || n == 2)

r= 1;

else

r= f(n - 1) + f(n - 2);

return r;

}

27、设计一个程序使用person类,其类中包含如下信息:姓名:name;血型:blood;

创建一个person对象p如下:person p=new person(“江涛”,“AB”);然后,

使用printname方法将姓名显示出来。使用printblood方法将血型显示出来。

class Program

{

static void Main(string[] args)

{

person p = new person("江涛", "AB");

ame();

lood();

ne();

}

}

class person

{

string name, blood;

public person(string name, string blood)

{

= name;

= blood;

}

public void printname()

{

ine("名字是:" + name);

}

public void printblood()

{

ine("血型是:" + blood);

}

}

28、创建一个Circle类,两个方法分别求圆的面积和周长。并在主函数中调用。

class Program

{

static void Main(string[] args)


本文标签: 方法 类型 程序 使用