C#期末考試題
一、單項(xiàng)選擇題(每小題2分,共20分)
1.在類作用域中能夠通過直接使用該類的( ?)成員名進(jìn)行訪問。
A. 私有 ?????B. 公用 ?????C. 保護(hù) ?????D. 任何
答案:D
2.小數(shù)類型(decimal)和浮點(diǎn)類型都可以表示小數(shù),正確說法:( ???)
A. 兩者沒有任何區(qū)別
B. 小數(shù)類型比浮點(diǎn)類型取值范圍大
C.小數(shù)類型比浮點(diǎn)類型精度高
D. 小數(shù)類型比浮點(diǎn)類型精度低
答案:C
3.能作為C#程序的基本單位是( ???)。
A. 字符 ?????B. 語(yǔ)句 ?????C. 函數(shù) ?????D. 源程序文件
答案:B
4. 可用作C#程序用戶標(biāo)識(shí)符的一組標(biāo)識(shí)符是( ???)。
A. void ???define ???+WORD ???????B. a3_b3 ???_123 ???YN
C. for ?????-abc ?????Case ?????????D. 2a ?????DO ?????sizeof
答案:B
5.引用類型主要有4種:類類型、數(shù)組類型、接口類型和( ???)。
A.對(duì)象類型 B.字符串類型 C.委托類型 D.整數(shù)類型
答 案:C
6.加載窗體時(shí)觸發(fā)的事件是( ???)。
A. Click ???B.Load ?C.GotFoucs ?D.DoubleClick
答案:B
7.改變窗體的標(biāo)題,需修改的窗體屬性是( ???)。
A. ?Text ?B. Name ?C.Title ?D. ?Index
答案:A
8.在C#中定義接口時(shí),使用的關(guān)鍵字是( ???)。
A.interface ?B.: ???C.class ???D.overrides
答案:A
9.在類的成員中,用于存儲(chǔ)屬性值的是( ???)。
A. 屬性 ?B. 方法 ???C. 事件 ?D.成員變量
答案:成員變量
10.在C#中,定義派生類時(shí),指定其基類應(yīng)使用的語(yǔ)句是( ???)。
A.Inherits ?B.: ???C.Class ?D.Overrides
答案:B
11.類的以下特性中,可以用于方便地重用已有的代碼和數(shù)據(jù)的是( ?).
A.多態(tài) ?B.封裝 ?C.繼承 ?D.抽象
答案:C
12.在Array類中,可以對(duì)一維數(shù)組中的元素進(jìn)行排序的方法是( ???)。
A.Sort() ???B.Clear() ?C.Copy() ???D.Reverse()
答案:A
13.將變量從字符串類型轉(zhuǎn)換為數(shù)值類型可以使用的類型轉(zhuǎn)換方法是( ?)。
A.Str() ?B.Cchar ?C.CStr() ?D.int.Parse();
答案:D
14.數(shù)據(jù)類型轉(zhuǎn)換的類是( ?)。
A.Mod ???B.Convert ?C. Const ?D. ?Single
答案:B
15.字符串連接運(yùn)算符包括&和( ?)。
A. + ?B. - ?C. * ?D. /
答案 A
16.先判斷條件的當(dāng)循環(huán)語(yǔ)句是( ???)。
A. ?do...while ?B. ?while ?C. while...do ?D. do ...loop
答案:B
17. C#是一種面向( ???)的語(yǔ)言。
A. 機(jī)器 ?B.過程 ?C.對(duì)象 ?D.事物
答案:C
18. 假定一個(gè)10行20列的二維整型數(shù)組,下列哪個(gè)定義語(yǔ)句是正確的( ???)。
A. int[]arr = new int[10,20]
B. int[]arr = int new[10,20]
C. int[,]arr = new int[10,20]
D. int[,]arr = new int[20;10]
答案:C
19. 以下正確的描述是( ???)。
A. 函數(shù)的定義可以嵌套,函數(shù)的調(diào)用不可以嵌套
B. 函數(shù)的定義不可以嵌套,函數(shù)的調(diào)用可以嵌套
C. 函數(shù)的定義和函數(shù)的調(diào)用均可以嵌套
D. 函數(shù)的定義和函數(shù)的調(diào)用均不可以嵌套
答案:B
20.小數(shù)類型和浮點(diǎn)類型都可以表示小數(shù),正確說法:( ???)
A. 兩者沒有任何區(qū)別
B. 小數(shù)類型比浮點(diǎn)類型取值范圍大
C.小數(shù)類型比浮點(diǎn)類型精度高
D. 小數(shù)類型比浮點(diǎn)類型精度低
答案:C
21.在C#中,可以標(biāo)識(shí)不同的對(duì)象的屬性是( ???)。
A.Text ?B.Name ?C.Title ?D.Index
答案:B
22.在VC#.Net中,可以標(biāo)識(shí)不同的對(duì)象的屬性是( ???)。
A.Text ?B.Name ?C.Title ?D.Index
答案:B
23.在C#中定義接口時(shí),使用的關(guān)鍵字是( ???)。
A.interface ?B.: ???C.class ???D.overrides
答案:A
24.屬于C#語(yǔ)言的關(guān)鍵字( ???)。
A. abstract ???B. camel ???C. Salary ???D. Employ
答案:A
25.C#語(yǔ)言中,值類型包括:基本值類型、結(jié)構(gòu)類型和( ???)。
A.小數(shù)類型 ?B.整數(shù)類型 C.類類型 D.枚舉類型
答案:D
26. 假定一個(gè)10行20列的二維整型數(shù)組,下列哪個(gè)定義語(yǔ)句是正確的( ???)。
A. int[]arr = new int[10,20]
B. int[]arr = int new[10,20]
C. int[,]arr = new int[10,20]
D. int[,]arr = new int[20;10]
答案:C
27. 以下正確的描述是( ???)。
A. 函數(shù)的定義可以嵌套,函數(shù)的調(diào)用不可以嵌套
B. 函數(shù)的定義不可以嵌套,函數(shù)的調(diào)用可以嵌套
C. 函數(shù)的定義和函數(shù)的調(diào)用均可以嵌套
D. 函數(shù)的定義和函數(shù)的調(diào)用均不可以嵌套
答案:B
28. 以下說法正確的是( ???)。
A. 接口可以實(shí)例化 ???????????????????B. 類只能實(shí)現(xiàn)一個(gè)接口
C. 接口的成員都必須是未實(shí)現(xiàn)的 ???????D. 接口的成員前面可以加訪問修飾符
答案:C
29. 下列關(guān)于抽象類的說法錯(cuò)誤的是( ???)。
A. 抽象類可以實(shí)例化 ???????????????B. 抽象類可以包含抽象方法
C. 抽象類可以包含抽象屬性 ???????D. 抽象類可以引用派生類的實(shí)例
答案:A
30. 下列關(guān)于重載的說法,錯(cuò)誤的是( ???)。
A. 方法可以通過指定不同的參數(shù)個(gè)數(shù)重載
B. 方法可以通過指定不同的參數(shù)類型重載
C. 方法可以通過指定不同的參數(shù)傳遞方式重載
D. 方法可以通過指定不同的返回值類型重載
答案:D
31. 關(guān)于虛方法實(shí)現(xiàn)多態(tài),下列說法錯(cuò)誤的是( ???)。
A. 定義虛方法使用關(guān)鍵字virtual
B. 關(guān)鍵字virtual可以與override一起使用
C. 虛方法是實(shí)現(xiàn)多態(tài)的一種應(yīng)用形式
D. 派生類是實(shí)現(xiàn)多態(tài)的一種應(yīng)用形式
答案:B
32. 以下關(guān)于繼承的說法錯(cuò)誤的是( ???)。
A. .NET框架類庫(kù)中,object類是所有類的基類
B. 派生類不能直接訪問基類的私有成員
C. protected修飾符既有公有成員的特點(diǎn),又有私有成員的特點(diǎn)
D. 基類對(duì)象不能引用派生類對(duì)象
答案:D
33. 繼承具有( ???),即當(dāng)基類本身也是某一類的派生類時(shí),派生類會(huì)自動(dòng)繼承間接基類的成員。
A. 規(guī)律性 ???????B. 傳遞性 ???????C. 重復(fù)性 ???????D. 多樣性
答案:B
34. 下列說法中,正確的是( ???)。
A. 派生類對(duì)象可以強(qiáng)制轉(zhuǎn)換為基類對(duì)象
B. 在任何情況下,基類對(duì)象都不能轉(zhuǎn)換為派生類對(duì)象
C. 接口不可以實(shí)例化,也不可以引用實(shí)現(xiàn)該接口的類的對(duì)象
D. 基類對(duì)象可以訪問派生類的成員
答案:A
6.使用Dirctory類的下列方法,可以獲取指定文件夾中的文件的是( ?).
A.Exists() ?B.GetFiles() ?C.GetDirectories() ???D.CreateDirectory()
答案:B
2.StreamWriter對(duì)象的下列方法,可以向文本文件寫入一行帶回車和換行的文本的是( ?)。
A.WriteLine() ?B.Write() ???C.WritetoEnd() ?D.Read()
答案:A
3.建立訪問鍵時(shí),需在菜單標(biāo)題的字母前添加的符號(hào)是( ???)。
A.! ???B.# ???C.$ ???D.&
答案:D
4.在C#.Net中,用來創(chuàng)建主菜單的對(duì)象是( ?)。
A. Menu ???B.MenuItem ???C.MenuStrip ???D.Item
答案:C
5.下面所列舉的應(yīng)用程序中,不是多文檔應(yīng)用程序的是( ?????)
A.Word ???B.Excel ?????C.PowerPoint ?D.記事本
答案:D
7.下面所列舉的應(yīng)用程序中,不是多文檔應(yīng)用程序的是( ?????)
A.Word ???B.Excel ?????C.PowerPoint ?D.記事本
答案:D
5.在Array類中,可以對(duì)一維數(shù)組中的元素查找的方法是( ???)。
A.Sort() ?B.BinarySearch() ?C.Convert() ?D.Index()
答案:B
二、填空題(每空2分,共20分)
1. 當(dāng)在程序中執(zhí)行到 ?????????????語(yǔ)句時(shí),將結(jié)束所在循環(huán)語(yǔ)句中循環(huán)體的一次執(zhí)行。
答案:continue
2. 枚舉是從System. ?????????類繼承而來的類型。
答案:Enum
3.類中聲明的屬性往往具有g(shù)et()和 ?????兩個(gè)訪問器。
答案:set()
4.C#提供一個(gè)默認(rèn)的無(wú)參構(gòu)造函數(shù),當(dāng)我實(shí)現(xiàn)了另外一個(gè)有一個(gè)參數(shù)的構(gòu)造函數(shù)時(shí),還想保留這個(gè)無(wú)參數(shù)的構(gòu)造函數(shù)。這樣我應(yīng)該寫 ?????構(gòu)造函數(shù)。
答:兩個(gè)
5.接口(interface)是指: ?????????????????????????????????????????????????。
答:只含有公有抽象方法(public abstract method)的類。這些方法必須在子類中被實(shí)現(xiàn)。
6. 在switch語(yǔ)句中,每個(gè)語(yǔ)句標(biāo)號(hào)所含關(guān)鍵字case后面的表達(dá)式必須是 ?????????????????????????。
答案:常量表達(dá)式
7. 在while循環(huán)語(yǔ)句中,一定要有修改循環(huán)條件的語(yǔ)句,否則,可能造成 ?????????.。
答案:死循環(huán)
8.傳入某個(gè)屬性的SET方法的隱含參數(shù)的名稱是 ???????。
答:value
9.C#的類不支持多重繼承,但可以用 ?????????來實(shí)現(xiàn)。
答案:接口
10.C#數(shù)組類型是一種引用類型,所有的數(shù)組都是從System命名空間的 ?????類繼承而來的引用對(duì)象。
答案:object
12.一般將類的構(gòu)造方法聲明為 ?????????訪問權(quán)限。如果聲明為private,就不能創(chuàng)建該類的對(duì)象。
答案:public或公有
13.在方法定義中,virtual含義: ???????????????????????????????????????????。
答案:被virtual修飾的方法可以被子類覆寫
14. C#數(shù)組元素的下標(biāo)從 ?????開始。
答案:0
15. 元素類型為double的2行5列的二維數(shù)組共占用 ???????????????字節(jié)的存儲(chǔ)空間。
答案:80
16.對(duì)于方法,參數(shù)傳遞分為值傳遞和 ???????兩種。
答案:引用傳遞
三、判斷題(每題2分,20分)
1.不能指定接口中方法的修飾符。
答:對(duì)
2.DotNet包含兩個(gè)部分,即公共語(yǔ)言運(yùn)行時(shí)和框架類庫(kù)
答案:對(duì)
3.在同一行上可以書寫多條語(yǔ)句,每條語(yǔ)句間用分號(hào)分隔。
答案:對(duì)
4.在數(shù)據(jù)類型轉(zhuǎn)化時(shí),只能通過類型轉(zhuǎn)換關(guān)鍵字或Convert類實(shí)現(xiàn)。
答案:錯(cuò)
5.在定義數(shù)組時(shí)不允許為數(shù)組中的元素賦值。
答案:錯(cuò)
6.定義枚舉時(shí)至少為其中的一個(gè)枚舉成員賦值。
答案:錯(cuò)
7.接口與類同樣是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心,是創(chuàng)建對(duì)象的模版。
答案:對(duì)
8.委托是將方法作為參數(shù)傳遞給另一方法的一種數(shù)據(jù)類型。事件與委托沒有關(guān)系。
答案:錯(cuò)
9.如果要實(shí)現(xiàn)重寫,在基類的方法中必須使用virtual關(guān)鍵字,在派生類的方法中必須使用overrides關(guān)鍵字。
答案:錯(cuò)
10.在C#類中,this代表了當(dāng)前類本身。
答案:錯(cuò)
11.靜態(tài)類和實(shí)例類的區(qū)別在于:靜態(tài)類不需要初始化即可直接使用,實(shí)例類需要進(jìn)行實(shí)例化,生成對(duì)象才可使用。
答案:對(duì)
12.用Interval屬性設(shè)置Timer控件Tick事件發(fā)生的時(shí)間間隔單位為秒。
答案:錯(cuò)
13.設(shè)置圖片框控件的SizeMode屬性為StretchImage時(shí),圖片可以按圖片框的大小比例縮放顯示。
答案:對(duì)
14.可以重寫私有的虛方法。
答:錯(cuò)
15.在C#中,所有類都是直接或間接地繼承System.Object類而得來的。
答案:對(duì)
16.在C#中,任何方法都不能實(shí)現(xiàn)多繼承。
答案:錯(cuò)
17.在C#中,子類不能繼承父類中用private修飾的成員變量和成員方法。
答案:對(duì)
18.菜單項(xiàng)標(biāo)題中有含有帶下劃線的字符,這是快捷鍵。
答案:錯(cuò)
2.可以阻止某一個(gè)類被其他類繼承。
答:對(duì)
14.一個(gè)窗體中可以有多個(gè)彈出式菜單。
答案:對(duì)
5.在C#Net中,窗體父子關(guān)系通過“屬性”窗口來創(chuàng)建。
答案:對(duì)
7.使用Directory類的Move()方法可以刪除文件。
答案:錯(cuò)
8.使用FileInfo類的Copy()方法可以復(fù)制文件。
答案:對(duì)
9.DataSet對(duì)象中的表可以和數(shù)據(jù)庫(kù)中的表同名,也可以不同名。
答案:對(duì)
10.Command對(duì)象可以執(zhí)行SQL語(yǔ)句。
答案:對(duì)
5.使用Directory類的Move()方法可以刪除文件。
答案:錯(cuò)
6.使用FileInfo類的Copy()方法可以復(fù)制文件。
答案:對(duì)
`
四、程序閱讀題(每小題5分,共30分)
1.寫出以下程序的運(yùn)行結(jié)果。
using System;
class Test
{
public static void Main()
{
int x = 5;
int y = x++;
Console.WriteLine(y);
y=++x;
Console.WriteLine(y);
}
}
答案: 5
7
2. 寫出下列函數(shù)的功能。
static int SA(int a,int b)
{
if (a>b)
return 1;
else if (a==b)
return 0;
else
return -1;
}
答案:比較兩個(gè)整數(shù)a和b的大小,若a>b則返回1,若a= =b則返回0,若a<b則返回-1。
3.寫出下列函數(shù)的功能。
static float FH() {
float y=0,n=0;
int x = Convert.ToInt32(Console.ReadLine()); //從鍵盤讀入整型數(shù)據(jù)賦給x
while (x!=-1) {
n++; y+=x;
x = Convert.ToInt32(Console.ReadLine());
}
if (n==0)
return y;
else
return y/n;
}
答案:求出從鍵盤上輸入的一批常數(shù)的平均值,以-1作為結(jié)束輸入的標(biāo)志。
4.寫出以下程序運(yùn)行結(jié)果。
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;
}
}
Console.WriteLine(s0 + " " + s1 + " " + s2);
}
}
答案:9 ?12 ?15
5.寫出以下程序的功能。
static void f2(ref double[] a, int n)
{ ???????int i; double sum=0;
for(i=0;i<n;i++) sum+=a[i];
sum/=n;
for(i=0;i<n;i++)
if(a[i]>=sum)
Console.write( a[i] + “ ?“ );
Console.writeLine ();
}
答案:顯示輸出數(shù)組a中大于等于平均值的所有元素值。
6.寫出以下程序運(yùn)行結(jié)果。
using System;
class Test
{
const int N=5;
public static void Main (){
int a = 0;
for(int i=1; i<N; i++)
{
int c=0, b=2;
a+=3; c=a+b;
Console.write (c + “ ?“ );
} ?}
答案:5 8 11 14
7. 寫出以下程序運(yùn)行結(jié)果。
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);
}
}
答案:25 ?10
25 ?10
8.寫出以下程序的功能。
static void WA(ref int[] a, int n) {
for(int i=0;i<n-1;i++) {
int k=i;
for(int j=i+1;j<n;j++)
if(a[j]<a[k]) k=j;
int x=a[i]; a[i]=a[k]; a[k]=x; ???}
}
答案:采用選擇排序的方法對(duì)數(shù)組a中的n個(gè)整數(shù)按照從小到大的次序重新排列。
9. 寫出以下程序的運(yùn)行結(jié)果。
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 ??4 ??6
8 ?10 ?12
14 ?16 ?18
10. 寫出以下程序運(yùn)行結(jié)果。
using System;
class Test
{
public static void Main ()
{
int s=0;
for (int i=1; ?; i++) {
if (s>50) ?break;
if (i%2==0) ?s+=i;
}
Console.writeLine ("i, s=" + i + "," + s);
} ?}
答案:i,s = 15, 56
五、簡(jiǎn)答題(10分,每題5分)
1.如何區(qū)別重載方法?
不同的參數(shù)類型,不同的參數(shù)個(gè)數(shù),不同的參數(shù)順序
2.C#用多種修飾符來表達(dá)類的不同性質(zhì)。根據(jù)其保護(hù)級(jí)C#的類有五種不同的限制修飾符,請(qǐng)寫出并指出它們之間的區(qū)別是什么?
答:
public 可以被任意存取
protected只可以被本類和其繼承子類存取
internal只可以被本組合體(Assembly)內(nèi)所有的類存取,組合體是C#語(yǔ)言中類被組合后的邏輯單位和物理單位,其編譯后的文件擴(kuò)展名往往是“.DLL”或“.EXE”。
protected internal唯一的一種組合限制修飾符,它只可以被本組合體內(nèi)所有的類和這些類的繼承子類所存取。
private只可以被本類所存取。
3.接口和抽象類的區(qū)別是什么?
答:接口用于規(guī)范,抽象類用于共性。接口中只能聲明方法,屬性,事件,索引器。而抽象類中可以有方法的實(shí)現(xiàn),也可以定義非靜態(tài)的類變量。抽象類是類,所以只能被單繼承,但是接口卻可以一次實(shí)現(xiàn)多個(gè)。抽象類可以提供某些方法的部分實(shí)現(xiàn),接口不可以.抽象類的實(shí)例是它的子類給出的。接口的實(shí)例是實(shí)現(xiàn)接口的類給出的。在抽象類中加入一個(gè)方法,那么它的子類就同時(shí)有了這個(gè)方法。而在接口中加入新的方法,那么實(shí)現(xiàn)它的類就要重新編寫(這就是為什么說接口是一個(gè)類的規(guī)范了)。接口成員被定義為公共的,但抽象類的成員也可以是私有的、受保護(hù)的、內(nèi)部的或受保護(hù)的內(nèi)部成員(其中受保護(hù)的內(nèi)部成員只能在應(yīng)用程序的代碼或派生類中訪問)。此外接口不能包含字段、構(gòu)造函數(shù)、析構(gòu)函數(shù)、靜態(tài)成員或常量。
4.什么是抽象類?
答案:抽象類是含有一個(gè)或多個(gè)抽象方法的類,抽象類不能實(shí)例化。
基于C#的OOP技術(shù)課程 復(fù)習(xí)題
一、 判斷題(本大題共10個(gè)小題,每小題1分,共10分)
1. 在同一行上可以書寫多條語(yǔ)句,每條語(yǔ)句間用分號(hào)分隔。(t )
2. 在數(shù)據(jù)類型轉(zhuǎn)化時(shí),只能通過類型轉(zhuǎn)換關(guān)鍵字或Convert類實(shí)現(xiàn)。(f )
3. 接口與類同樣是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心,是創(chuàng)建對(duì)象的模版。(F )
4. 委托是將方法作為參數(shù)傳遞給另一方法的一種數(shù)據(jù)類型。事件與委托沒有關(guān)系。(F )
5. 可以重寫私有的虛方法。(T )
6. 使用Directory類的Move()方法可以刪除文件。(T )
7. 不能指定接口中方法的修飾符。(T )
8. 在定義數(shù)組時(shí)不允許為數(shù)組中的元素賦值。(F )
9. 接口與類同樣是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心,是創(chuàng)建對(duì)象的模版。( )
10. 如果要實(shí)現(xiàn)重寫,在基類的方法中必須使用virtual關(guān)鍵字,在派生類的方法中必須使用overrides關(guān)鍵字。(T )
11. 在C#中,所有類都是直接或間接地繼承System.Object類而得來的。(T )
12. 在C#中,任何方法都不能實(shí)現(xiàn)多繼承。(F )
13. 在C#中,子類不能繼承父類中用private修飾的成員變量和成員方法。(F )
14. 可以阻止某一個(gè)類被其他類繼承。(T )
15. 使用FileInfo類的Copy()方法可以復(fù)制文件。(T )
二、選擇題(本大題共20個(gè)小題,每小題2分,共40分)
1. 在 C#中,表示一個(gè)字符串的變量應(yīng)使用以下哪條語(yǔ)句定義? B
A.CString str;
B.string str;
C.Dim str as string
D.char * str;
2. C#中 MyClass 為一自定義類,其中有以下方法定義:A
public void Hello(){…}
使用以下語(yǔ)句創(chuàng) 建了該類的對(duì)象,并使變量 obj 引用該對(duì)象,那么,訪問類MyClass的Hello方法正確的是:
MyClass obj = new MyClass();
A.obj.Hello();
B.obj::Hello();
C.MyClass.Hello();
D.MyClass::Hello();
3. 分析下列程序中類 MyClass 的定義 D
class BaseClass
{ public int i; }
class MyClass:BaseClass
{ public new int i;}
則下列語(yǔ)句在 Console 上的輸出為_______.
MyClass y = new MyClass();
BaseClass x = y;
x.i = 100;
Console.WriteLine("{0}, {1}",x.i,y.i); //(提示:注意類 MyClass 中的 new 關(guān)鍵字)
A.0, 0
B.100, 100
C.0, 100
D.100, 0
4. 在定義類時(shí),如果希望類的某個(gè)方法能夠在派生類中進(jìn)一步進(jìn)行改進(jìn),以處理不同的派生類的需要,則應(yīng)將該方法聲明成_C___?
A.sealed 方法
B.public 方法
C.virtual 方法
D.override 方法
5. 為了將字符串 str=“123,456”轉(zhuǎn)換成整數(shù) 123456,應(yīng)該使用以下哪條語(yǔ)句? ???A
A.int Num = int.Parse(str);
B.int Num = str.Parse(int);
C.int Num = (int)str;
D.int Num = int.Parse(str,Globalization.NumberStyles.AllowThousands);
6. 在 C#語(yǔ)言中,下列能夠作為變量名的是_C___?
A.if
B.3ab
C.a_3b
D.a-bc
7. 以下程序的輸出結(jié)果是_C___?
Using system;
Class Example1
{
Public Static void main() {
Int a=5,b=4,c=6,d;
Console.Writeline(“{0}”,d=a>b?(a>c?a:c):b);
}
}
A.5
B.4 ??
C.6
D.不確定
8. 能正確表示邏輯關(guān)系“a>=10 或 ?a<=0”的 C#語(yǔ)言表達(dá)式是_D___?
A.a>=10 or a<=0
B.a>=10|a<=0
C.a>=10&&a<=0
D.a>=10||a<=0
9. 以下關(guān)于 for 循環(huán)的說法不正確的是__A__?
A.for 循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況
B.for 循環(huán)是先判定表達(dá)式,后執(zhí)行循環(huán)體語(yǔ)句
C.for 循環(huán)中,可以用 break語(yǔ)句跳出循環(huán)體
D.for 循環(huán)體語(yǔ)句中,可以包含多條語(yǔ)句,但要用花括號(hào)括起來?
10. 有如下程序 Using system; C
Class Example1
{
Public Static void main()
{
Int x=1,a=0,b=0;
Switch(x)
{
Case 0:b++,break;
Case 1:a++,break;
Case 2:a++,b++;break;
} Console.Writeline(“a={0},b={1}”,a,b);
} }的輸出結(jié)果是
A.a=2,b=1
B.a=1,b=1
C.a=1,b=0
D.a=2,b=2
11. 關(guān)于 C#語(yǔ)言的方法,下列敘述中正確的是_A___?
A.方法的定義不能嵌套,但方法調(diào)用可以嵌套
B.方法的定義可以嵌套,但方法調(diào)用不能嵌套
C.方法的定義和調(diào)用都不能嵌套
D.方法的定義和調(diào)用都可以嵌套
12. 下列程序的結(jié)果是: B
Using system;
Class Example1
{
Static long fib(int n)
{
If(n>2) return(fib(n-1)+fib(n-2));
Else rerurn(2);
} Public Static void main()
{ Console.Writeline(“{0}”,fib(3));
} }
A.2
B.4
C.6
D.8
13. 調(diào)用重載方法時(shí),系統(tǒng)根據(jù)___B_____來選擇具體的方法?
A.方法名
B.參數(shù)的個(gè)數(shù)和類型
C.參數(shù)名及參數(shù)個(gè)數(shù)
D.方法的返回值類型
14. 下列的___D____不是構(gòu)造函數(shù)的特征?
A.構(gòu)造函數(shù)的函數(shù)名和類名相同
B.構(gòu)造函數(shù)可以重載
C.構(gòu)造函數(shù)可以帶有參數(shù)
D.可以指定構(gòu)造函數(shù)的返回值
15. 已知類 B 是由類 A繼承而來,類 A 中有一個(gè)為 M 的非虛方法,現(xiàn)在希望在類 B 中也 定義一個(gè)名為 M 的方法,若希望編譯時(shí)不出現(xiàn)警告信息,則在類 B中聲明該方法時(shí),應(yīng)使 用____B____方法?
A.static
B.new
C.override
D.virtual
16. 下列關(guān)于 try…catch…finaly語(yǔ)句的說明中,不正確的是____D_____?
A.catch塊可以有多個(gè)
B.finaly
C.catch塊也是可選的
D.可以只有 try塊
17. 以下標(biāo)識(shí)符中,正確的是_A___?
A._nName
B.typeof
C.6b
D.x5#
18. 下面有關(guān)運(yùn)算符的說法正確的是_D___
A.算術(shù)運(yùn)算符不能對(duì)布爾類型,String*(字符串類型)和 Object*(對(duì)象類型) 進(jìn)行算術(shù)運(yùn)算
B.關(guān)系運(yùn)算中的”= =”和賦值運(yùn)算符中的”=”是相同的
C.sizeof 運(yùn)算符用來查詢某種數(shù)據(jù)類型或表達(dá)式的值在內(nèi)存中所占懂得內(nèi)存空間大小(字 節(jié)數(shù))
D.括號(hào)在運(yùn)算符中的優(yōu)先級(jí)中是最高的,它可以改變表達(dá)式的運(yùn)算順序
19. 下面對(duì)抽象類描述不正確的是__C____?
A.抽象類只能作為基類使用
B.抽象類不能定義對(duì)象
C.抽象類可以實(shí)例對(duì)象
D.可以實(shí)現(xiàn)多態(tài)
20. 下面對(duì)異常說法不正確的是_D__
A.try/catch塊為基本引發(fā)異常的組合
B.在捕獲異常時(shí),可以有多個(gè) catch塊
C.無(wú)論異常是否發(fā)生,finally塊總會(huì)執(zhí)行
D.try塊和 finally 不能連用
1. C#中,新建一字符串變量 str,并將字符串"Tom's Living Room"保存到串中,則應(yīng)該使用下列哪條語(yǔ)句? A
A.string str = "Tom\'s Living Room";
B.string str = "Tom's Living Room";
C.string str("Tom's Living Room");
D.string str("Tom"s Living Room");
2. 分析下列程序: A
public class class4
{
private string _sData = "";
public string sData{set{_sData = value;}}
}
在 Main 函數(shù)中,在成功創(chuàng)建該類的對(duì)象 ?obj 后,下列哪些語(yǔ)句是合法的?
A.obj.sData = "It is funny!";
B.Console.WriteLine(obj.sData);
C.obj._sData = 100;
D.obj.set(obj.sData);
3. 分析下列程序中類 MyClass 的定義
class BaseClass
{ public int i; }
class MyClass:BaseClass
{ public new int i;}
則下列語(yǔ)句在 Console 上的輸出為___D____.
MyClass y = new MyClass();
BaseClass x = y;
x.i = 100;
Console.WriteLine("{0}, {1}",x.i,y.i); //(提示:注意類 MyClass 中的 new 關(guān)鍵字)
A.0, 0
B.100, 100
C.0, 100
D.100, 0
4. 在類的定義中,類的___B_______描述了該類的對(duì)象的行為特征?
A.類名
B.方法
C.所屬的名字空間
D.私有域
5. 關(guān)于 C#程序的書寫,下列不正確的說法是__D__?
A.區(qū)分大小寫
B.一行可以寫多條語(yǔ)句
C.一條語(yǔ)句可寫成多行
D.一個(gè)類中只能有一個(gè) Main()方法,因此多個(gè)類中可以有多個(gè) Main()方法
6. 能正確表示邏輯關(guān)系“a>=10 或 ?a<=0”的 C#語(yǔ)言表達(dá)式是_D___?
A.a>=10 or a<=0
B.a>=10|a<=0
C.a>=10&&a<=0
D.a>=10||a<=0
7. if語(yǔ)句后面的表達(dá)式應(yīng)該是_B___?
A.邏輯表達(dá)式
B.條件表達(dá)式
C.算術(shù)表達(dá)式
D.任意表達(dá)式
8. 以下敘述正確的是__D__?
A.do….while語(yǔ)句構(gòu)成的循環(huán)不能用其他語(yǔ)句構(gòu)成的循環(huán)來代替
B.do….while語(yǔ)句構(gòu)成的循環(huán)只能用 ?break語(yǔ)句退出
C.用 do….while語(yǔ)句構(gòu)成的循環(huán),在 while后的表達(dá)式為 true時(shí)結(jié)束循環(huán)
D.用 do….while語(yǔ)句構(gòu)成的循環(huán),在 ?while后的表達(dá)式應(yīng)為關(guān)系表達(dá)式或邏輯表達(dá)式
9. 以下程序的輸出結(jié)果是: C
Class Example1
{
Public Static void main()
{
Int I;
Int []a=new int[10];
For(i=9;i>=0;i--) a[i]=10-I;
Console.Writeline(“{0},{1}{2}”,a[2],a[5],a[8]);
}}
A.258
B.741
C.852
D.369
10. 關(guān)于 C#語(yǔ)言的方法,下列敘述中正確的是_A___?
A.方法的定義不能嵌套,但方法調(diào)用可以嵌套
B.方法的定義可以嵌套,但方法調(diào)用不能嵌套
C.方法的定義和調(diào)用都不能嵌套
D.方法的定義和調(diào)用都可以嵌套
11. 下列程序的結(jié)果是: B
Using system;
Class Example1
{
Static long fib(int n)
{
If(n>2) return(fib(n-1)+fib(n-2));
Else rerurn(2);
} Public Static void main()
{ Console.Writeline(“{0}”,fib(3));
} }
A.2
B.4
C.6
D.8
12. 調(diào)用重載方法時(shí),系統(tǒng)根據(jù)___B_____來選擇具體的方法?
A.方法名
B.參數(shù)的個(gè)數(shù)和類型
C.參數(shù)名及參數(shù)個(gè)數(shù)
D.方法的返回值類型
13. 下列的__D_____不是構(gòu)造函數(shù)的特征?
A.構(gòu)造函數(shù)的函數(shù)名和類名相同
B.構(gòu)造函數(shù)可以重載
C.構(gòu)造函數(shù)可以帶有參數(shù)
D.可以指定構(gòu)造函數(shù)的返回值
14. 類 Class A有一個(gè)名為M1 的方法,在程序中有如下一段代碼,假設(shè)該段代碼是可以執(zhí) 行的,則修飾 M1 方法時(shí)一定使用了___B_____修飾符? ClassA obj=new Class A();
ClassA.M1();
A.public
B.static
C.private
D.virtual
15. 為了能夠在程序中捕獲所有的異常,在 ?catch語(yǔ)句的括號(hào)中使用的類名為_____A____?
A.Exception
B.DivideByZeroException
C.FormatException
D.以上三個(gè)均可
16. 關(guān)于異常,下列的說法中不正確的是___D______?
A.用戶可以根據(jù)需要拋出異常
B.在被調(diào)用方法可通過 throw語(yǔ)句把異常傳回給調(diào)用方法
C.用戶可以自己定義異常
D.在 C#中有的異常不能被捕獲
17. 以下類型中,不屬于值類型的是__D__?
A.整數(shù)類型
B.布爾類型
C.字符類型
D.類類型
18. 下列給出的變量名正確的是_A____.
A.int ?NO.1
B.char use
C.float Main
D.char @use
19. 在定義類時(shí),如果希望類的某個(gè)方法能夠在派生類中進(jìn)一步進(jìn)行改進(jìn),以處理不同的派生類的需要,則應(yīng)將該方法聲明成__C__?
A.sealed 方法
B.public 方法
C.virtual 方法
D.override 方法
20. 為了將字符串 str=“123,456”轉(zhuǎn)換成整數(shù) 123456,應(yīng)該使用以下哪條語(yǔ)句?A
A.int Num = int.Parse(str);
B.int Num = str.Parse(int);
C.int Num = (int)str;
D.int Num = int.Parse(str,Globalization.NumberStyles.AllowThousands);
三、程序閱讀題(本大題共5個(gè)小題,每小題5,共25
1. 寫出以下程序的運(yùn)行結(jié)果。
using System;
class Test
{
public static void Main()
{
int x = 5;
int y = x++;
Console.WriteLine(y);
y=++x;
Console.WriteLine(y);
}
}
2. 寫出下列函數(shù)的功能。
static float FH() {
float y=0,n=0;
int x = Convert.ToInt32(Console.ReadLine()); //從鍵盤讀入整型數(shù)據(jù)賦給x
while (x!=-1) {
n++; y+=x;
x = Convert.ToInt32(Console.ReadLine());
}
if (n==0)
return y;
else
return y/n;
}
3. 寫出以下程序的功能。
static void f2(ref double[] a, int n)
{ ???????int i; double sum=0;
for(i=0;i<n;i++) sum+=a[i];
sum/=n;
for(i=0;i<n;i++)
if(a[i]>=sum)
Console.write( a[i] + “ ?“ );
Console.writeLine ();
}
4. 寫出以下程序運(yùn)行結(jié)果。
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);
}
}
5. 寫出以下程序的運(yùn)行結(jié)果。
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();
} ?}
}
6.. 寫出下列函數(shù)的功能。
static int SA(int a,int b)
{
if (a>b)
return 1;
else if (a==b)
return 0;
else
return -1;
}
7.寫出以下程序運(yùn)行結(jié)果。
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;
}
}
Console.WriteLine(s0 + " " + s1 + " " + s2);
}
}
8.寫出以下程序運(yùn)行結(jié)果。
using System;
class Test
{
const int N=5;
public static void Main (){
int a = 0;
for(int i=1; i<N; i++)
{
int c=0, b=2;
a+=3; c=a+b;
Console.write (c + “ ?“ );
} ?}
9.寫出以下程序的功能。
static void WA(ref int[] a, int n) {
for(int i=0;i<n-1;i++) {
int k=i;
for(int j=i+1;j<n;j++)
if(a[j]<a[k]) k=j;
int x=a[i]; a[i]=a[k]; a[k]=x; ???}
}
10. 寫出以下程序運(yùn)行結(jié)果。
using System;
class Test
{
public static void Main ()
{
int s=0;
for (int i=1; ?; i++) {
if (s>50) ?break;
if (i%2==0) ?s+=i;
}
Console.writeLine ("i, s=" + i + "," + s);
} ?}
四、編程題(本大題共2個(gè)小題,第一小題10分,第二小題15分,共25分)
1. 編寫一個(gè)程序,定義三個(gè)float類型的變量,分別從鍵盤上輸入值給它們, ?然后用if ?else選擇語(yǔ)句找出它們中的最小數(shù),最后輸出結(jié)果。
2. 編一個(gè)程序,輸入一個(gè)整數(shù),使用if ?else語(yǔ)句,如果該數(shù)大于0,則加上100,否則加上500,輸出結(jié)果。
3. 編一個(gè)程序,定義一個(gè)類,該類中定義二個(gè)非靜態(tài)方法,一個(gè)方法用來求出這個(gè)三角形的周長(zhǎng),另一個(gè)方法用來求出這個(gè)三角形的面積。已知三角形三條邊a,b,c,計(jì)算其面積可以用Math類中的Sqrt()方法,有表達(dá)式Math.Sqrt(s*(s-a)*(s-b)*(s-c)),可以利用它計(jì)算指定數(shù)的開方,其中s=(a+b+c)/2。在主方法中輸入一個(gè)三角形三條邊a,b,c,要求調(diào)用這二個(gè)非靜態(tài)方法計(jì)算三角形的周長(zhǎng)和面積。注意:在輸入三角形三條邊時(shí),必須檢查它們的數(shù)據(jù)合法性。
4. 編一個(gè)程序,定義類student和它的成員(學(xué)號(hào),姓名,年齡和c_sharp程序設(shè)計(jì)成績(jī)),用類student生成對(duì)象s,分別對(duì)對(duì)象s的成員賦值,然后輸出對(duì)象s。