全國計算機等級考試二級C語言上機答題技巧及全國計算機等級考試二級Java語言程序設計試題及答案(一)_第1頁
全國計算機等級考試二級C語言上機答題技巧及全國計算機等級考試二級Java語言程序設計試題及答案(一)_第2頁
全國計算機等級考試二級C語言上機答題技巧及全國計算機等級考試二級Java語言程序設計試題及答案(一)_第3頁
全國計算機等級考試二級C語言上機答題技巧及全國計算機等級考試二級Java語言程序設計試題及答案(一)_第4頁
全國計算機等級考試二級C語言上機答題技巧及全國計算機等級考試二級Java語言程序設計試題及答案(一)_第5頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

全國計算機等級考試二級C語言上機答題技巧一、上機改錯題的特點和注意事項1.上機改錯的試題中通常包含兩個(或三個)錯誤需要修改。

2.試題中用"******found******/"來提示在下一行(或下面第二行)有錯。

3.錯誤的性質基本分語法錯和邏輯錯兩種,也有些試題要求把語句添加在下劃線處。

4.特別要注意的是:只能在出錯的行上進行修改,不要改動程序行的順序,更不要自己另編程序。二、上機改錯測試時,建議按以下步驟進行1.首先仔細審題,了解試題的要求,看清楚試題給出的輸入和輸出例示,以便檢驗改錯后程序運行的結果是否正確。

2.當在VisualC++6.0環境下調出源程序后,審視所在函數,根據題義理解程序所采用的基本算法,做到心里有數。

3.先按CTRL+F7對測試程序進行檢查是否有語法錯誤。當編譯提示有語法錯時,可參考編譯提示來查找并改正錯誤。

4.當不再出現語法錯時,使用F7執行,看結果使用CTRL+F5,按照試題的示例給出的數據進行試算,若試算的結果與給出的輸出結果相同時,該題就做對了;若試算的結果與給出的輸出結果不同,就應進一步檢查程序中的邏輯錯誤。

5.當程序存在邏輯錯誤時,首先應當理解題意、讀懂程序的算法,必要時可按步檢查數據的流程,以便確定錯誤所在。例如,題目要求數據按由小到大排序,而結果數據是按由大到小進行了排序,問題可能出現在條件判斷上。又如,輸出的字符串比預期的短,就有可能字符串的結束標志放錯了位置。再如做循環的時候數組上限下限錯誤了,基數是從0開始而不是1開始的。修改程序中的邏輯錯時,要求考生認真讀懂程序代碼。

6.修改完成,得到正確結果后,一定不要忘記把修改后的程序存盤。三、上機編程題的特點和說明1.在二級C程序設計上機考試中,要求完成一個獨立的函數的編程。目前教育部考試中心已出版了上機考試習題集,這些有助于學習編程,但考生應當在學習過程中理解基本的算法,通過實際上機操作積累經驗,才能掌握基本的編程能力。四、進行編程測試時,建議按以下步驟進行1.首先仔細審題,了解試題的要求,記下試題給出的輸入和輸出例示,以便檢驗在完成指定的函數后程序運行的結果是否正確。

2.當在VisualC++6.0環境下調出源程序后,應對照函數首部的形參,審視主函數中調用函數時的實參內容,以便明確在函數中需要處理的數據對象。

3.理解試題的要求,審視主函數中調用函數的方式,若在表達式中調用函數(如把函數值賦給某個對象),則要求有函數值返回,需注意函數的類型,并在函數中用return語句返回函數值;若主函數中僅用語句形式調用函數,則需要通過形參間接地返回所得結果。

4.選擇適當的算法進行編程,輸入程序語句。不要忘記及時存盤!

5.編譯程序,直到沒有語法錯誤。

6.調試程序,利用試題中給出的例示數據進行輸入(若要求輸入的話),運行程序,用例示的輸出數據檢驗輸出結果,直到結果相同。1.書寫標識符時,忽略了大小寫字母的區別。

main()

{

inta=5;

printf("%d",A);

}

編譯程序把a和A認為是兩個不同的變量名,而顯示出錯信息。C認為大寫字母和小寫字母是兩個不同的字符。習慣上,符號常量名用大寫,變量名用小寫表示,以增加可讀性。2.忽略了變量的類型,進行了不合法的運算。

main()

{

floata,b;

printf("%d",a%b);

}

%是求余運算,得到a/b的整余數。整型變量a和b可以進行求余運算,而實型變量則不允許進行“求余”運算。3.將字符常量與字符串常量混淆。

charc;

c="a";

在這里就混淆了字符常量與字符串常量,字符常量是由一對單引號括起來的單個字符,字符串常量是一對雙引號括起來的字符序列。C規定以“\”作字符串結束標志,它是由系統自動加上的,所以字符串

“a”實際上包含兩個字符:‘a'和‘\',而把它賦給一個字符變量是不行的。4.忽略了“=”與“==”的區別。

在許多高級語言中,用“=”符號作為關系運算符“等于”。如在BASIC程序中可以寫

if(a=3)then…

但C語言中,“=”是賦值運算符,“==”是關系運算符。如:

if(a==3)a=b;

前者是進行比較,a是否和3相等,后者表示如果a和3相等,把b值賦給a。由于習慣問題,初學者往往會犯這樣的錯誤。5.忘記加分號。

分號是C語句中不可缺少的一部分,語句末尾必須有分號。

a=1

b=2

編譯時,編譯程序在“a=1”后面沒發現分號,就把下一行“b=2”也作為上一行語句的一部分,這就會出現語法錯誤。改錯時,有時在被指出有錯的一行中未發現錯誤,就需要看一下上一行是否漏掉了分號。

{z=xy;

t=z/100;

printf("%f",t);}

對于復合語句來說,最后一個語句中最后的分號不能忽略不寫。6.多加分號。

對于一個復合語句,如:

{z=xy;

t=z/100;

printf("%f",t);

};

復合語句的花括號后不應再加分號,否則將會畫蛇添足。

又如:

if(a%3==0);

I;

本是如果3整除a,則I加1。但由于if(a%3==0)后多加了分號,則if語句到此結束,程序將執行I語句,不論3是否整除a,I都將自動加1。

再如:

for(I=0;I<5;I);

{scanf("%d",&x);

printf("%d",x);}

本意是先后輸入5個數,每輸入一個數后再將它輸出。由于for()后多加了一個分號,使循環體變為空語句,此時只能輸入一個數并輸出它。7.輸入變量時忘記加地址運算符“&”。

inta,b;

scanf("%d%d",a,b);

這是不合法的。Scanf函數的作用是:按照a、b在內存的地址將a、b的值存進去。“&a”指a在內存中的地址。8.輸入數據的方式與要求不符。

①scanf("%d%d",&a,&b);

輸入時,不能用逗號作兩個數據間的分隔符,如下面輸入不合法:

3,4

輸入數據時,在兩個數據之間以一個或多個空格間隔,也可用回車鍵,跳格鍵tab。

②scanf("%d,%d",&a,&b);

C規定:如果在“格式控制”字符串中除了格式說明以外還有其它字符,則在輸入數據時應輸入與這些字符相同的字符。下面輸入是合法的:

3,4

此時不用逗號而用空格或其它字符是不對的。

343:4

又如:

scanf("a=%d,b=%d",&a,&b);

輸入應如以下形式:

a=3,b=49.輸入字符的格式與要求不一致。

在用“%c”格式輸入字符時,“空格字符”和“轉義字符”都作為有效字符輸入。

scanf("%c%c%c",&c1,&c2,&c3);

如輸入abc

字符“a”送給c1,字符“”送給c2,字符“b”送給c3,因為%c只要求讀入一個字符,后面不需要用空格作為兩個字符的間隔。10.輸入輸出的數據類型與所用格式說明符不一致。

例如,a已定義為整型,b定義為實型

a=3;b=4.5;

printf("%f%d\n",a,b);

編譯時不給出出錯信息,但運行結果將與原意不符。這種錯誤尤其需要注意。11.輸入數據時,企圖規定精度。

scanf("%7.2f",&a);

這樣做是不合法的,輸入數據時不能規定精度。12.switch語句中漏寫break語句。

例如:根據考試成績的等級打印出百分制數段。

switch(grade)

{case'A':printf("85~100\n");

case'B':printf("70~84\n");

case'C':printf("60~69\n");

case'D':printf("<60");

default:printf("error");

由于漏寫了break語句,case只起標號的作用,而不起判斷作用。因此,當grade值為A時,printf函數在執行完第一個語句后接著執行第二、三、四、五個printf函數語句。正確寫法應在每個分支后再加上“break;”。例如

case'A':printf("85~100");break;13..在定義數組時,將定義的“元素個數”誤認為是可使的最大下標值。

main()

{staticinta[10]={1,2,3,4,5,6,7,8,9,10};

printf("%d",a[10]);

}

C語言規定:定義時用a[10],表示a數組有10個元素。其下標值由0開始,所以數組元素a[10]是不存在的。

16.在不應加地址運算符&的位置加了地址運算符。

scanf("%s",&str);

========================================================================

C語言編譯系統對數組名的處理是:數組名代表該數組的起始地址,且scanf函數中的輸入項是字符數組名,不必要再加地址符&。應改為:

scanf("%s",str);

1、編一個函數fun(char*s),函數的功能是把字符串中的內容逆置。

例子如:字符串中原有的內容為:abcdefg,則調用該函數后,串中的內容為:gfedcba

fun(char*s)

{inti=0,t,n=strlen(s);

for(;si{t=*(si);*(si)=*(sn-1-i);*(sn-1-i)=t;}}

注:該題的算法是先分別找出字符串的兩頭,然后同時逐一往中間移動,每移動一次

都進行兩字符的位置對換,直到中間字符(用si地址,因此要注意把它的內容取出再進行換位。即先進行取內容運算*)

2、請編寫函數fun,對長度為7個字符的字符串,除首、尾字符外,將其余5個字符按降序排列。例如,原來的字符串為CEAedca,排序后輸出為CedcEAa。

intfun(char*s,intnum)

{inti,j,t;

for(i=1;ifor(j=i1;jif(s{t=s;

s=s[j];

s[j]=t;}}

該題采用的排序法是選擇法進行降序排序,算法是用外for()循環從字符串的前端往后

端走動,每走動一個字符都用內嵌的for()循環在該字符后找出最小的字符與該字符進

行換位。直到外for()循環走到最后一個字符。此外,此題還要注意把首尾字符除開,即

在最外層for()循環中從1開始,只到num-2即可。

3、請編寫一個unsignedfun(unsignedw),w是一個大于10的無符號整數,若w是n(n>=2)位的整數,函數求出w的后n-1位的數作為函數值返回。例如:w值為5923,則函數返回923;w值為923則函數返回23。

unsignedfun(unsignedw)

{if(w>=10000)returnw000;

if(w>=1000)returnw00;

if(w>=100)returnw0;

returnw;

}

注:由于unsigned型整數在0-65535這間,只要它大于10000則對10000求余即得出后

面4位,否則如果大于1000則對1000求余得出后3位數,這樣一層一層往小的判斷。由于

return的作用除了返回值以外,還有當執行到return時就跳出該程序,所以可以連續的

用if()語句。

4、請編一函數voidfun(inttt[M][N],intpp[N]),tt指向一個M行N列的二維數組,求出二維數組每列中最小元素,并依次放入pp所指一維數組中,二維數組中的數已在主函數中賦予。

#defineM3

#defineN4

voidfun(inttt[M][N],intpp[N])

{inti,j;

for(i=0;i{pp=tt[0];

for(j=0;jif(tt[j]}}

5、請編一個函數fun,其中n所指存儲單元中存放了數組中元素的個數。函數的功能是:刪除所有值為y的元素。數組元素中的值和y的值由主函數通過健盤讀入。

試題程序。

#defineM20

voidfun(intbb[],int*n,inty)

{inti,j=0;

for(i=0;i<*n;i)

if(bb!=y)bb[j]=bb;

*n=j;}

6、請編寫一個函數intfun(intx),它的功能是:判斷整數x是否是同構數。若是同構數,函數返回1;否則返回0。

所謂“同構數”是指這樣的數,它出現在它的平方數的右邊。例如:輸入整數5,5的平方數是25,5是25中右側的數,所以5是同構數。x的值由主函數從健盤讀入,要求不大于100。

intfun(intx)

{intxx=x*x;

if(xx==x//xx==x//xx0==x)return1;

elsereturn0;}

7、請編寫函數fun,它的功能是:求出ss所指字符串中、指定字符的個數,并返回此值。例如:若輸入字符串:123412132,輸入字符為:1,則輸出:3。

#defineM81

intfun(char*ss,charc)

{intnum=0;

while(*ss!='\0')

{if(*ss==c)num++;

ss++;}

return(num);}

8、請編寫函數fun,經的功能是:求出1到1000之內能被7或11整除、但不能同時補7和11整除的所有整數并將它們放在a所指的數組中,通過n返回這些數的個數。

voidfun(int*a,int*n)

{inti,m=0;

for(i=1;i<1000;i)

if(((i%7==0)//(i==0))&&!((i%7==0)&&(i==0)))

{a[m]=i;m=1;}

*n=m;

}10、要求程序的功能是:把20個隨機數存入一個數組,然后輸出該數組中的最小值。其中確定最小值的下標的操作在fun函數中實現,請給出該函數的定義。

試題程序。

#include

#include

#defineVSIZE20

intvector[VSIZE];

intfun(intlist[],intsize)

{

inti,j=0;

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

if(list[i]<list[j])j=i;

returnj;

}

/*注:該題的算法是用一個變量(j)來存儲最小值元素的下標,在循環過程中讓每個元素都與原最小值元素進行大小比較。

================================================================改錯題策略與技巧一般有2—3處錯誤,均在以“*******found*******”下按Ctrl+F7編譯出現多個錯誤,由前向后修改。錯誤分兩大類

一.語法錯誤①丟失分號,或誤寫成逗號②關鍵字拼寫錯誤,如小寫變大寫③語句格式錯誤,如for句中多寫或少寫分號④表達式聲明錯誤,如少了()⑤函數類型說明錯誤⑥函數形參類型聲明錯誤,如少*號⑦運算符,書寫錯誤,如<寫成>

二.邏輯錯誤(語義錯誤)①變量初值錯誤②循環次數不對③下標越界④運算類型不匹配

編程題策略與技巧

一.認真閱讀試題①題目所給出的限制條件②一些術語解釋③題目提供的算法④程序的執行結果

二.清晰地理解fun函數①函數的功能②函數反回值類型③參數傳遞方式④運行結果三.調試運行程序①先調試程序②運行程序③利用好VC++調試工具一、選擇題(每小題1分,共40小題,共40分)

1.下列敘述中正確的是()。

A.一個算法的空間復雜度大,則其時間復雜度必定大

B.一個算法的空間復雜度大,則其時間復雜度必定小

C.一個算法的時間復雜度大,則其空間復雜度必定小

D.上述3種說法都不對D。【解析】算法的時間復雜度和空間復雜度是從不同的角度來衡量算法的執行情況的,它們之間沒有內在聯系。

2.開發軟件時對提高開發人員工作效率至關重要的是()。

A.操作系統的資源管理功能

B.先進的軟件開發工具和環境

C.程序員的數量

D.計算機的并行處理能力B。【解析】先進的軟件開發工具和環境對提高開發人員工作效率是至關重要的。

3.程序設計語言的基本成分是數據成分、運算成分、控制成分和()。

A.對象成分

B.變量成分

C.語句成分

D.傳輸成分D。【解析】程序設計語言的基本成分有:數據成分,用于描述程序所涉及的數據;運算成分,用于描述程序中所包含的運算;控制成分,用于描述程序中所包含的控制;傳輸成分,用于表達程序中數據的傳輸。

4.對長度為n的線性表進行順序查找,在最壞情況下需要比較的次數為()。

A.125

B.n/2

C.n

D.n+lC。【解析】對線性表進行順序查找時,從表中的第一個元素開始,將給定的值與表中逐個元素的關鍵字進行比較,直到兩者相符,查找到所要找的元素為止。在最壞情況

下,要查找的元素是表的最后一個元素或查找失敗,這兩種情況都需要將這個元素與表中的所有元素進行比較,因此比較次數為n。

5.有下列二叉樹,對此二叉樹前序遍歷的結果為()。

A.XZCYAB

B.XYZABC

C.XYABCZ

D.XYAZBCD。【解析】對二叉樹的前序遍歷是指:先訪問根結點,然后訪問左子樹,最后訪問右子樹,并且,在訪問左、右子樹時,先訪問根結點,再依次訪問其左、右子樹。

6.下列敘述中正確的是()。

A.在面向對象的程序設計中,各個對象之間具有密切的關系

B.在面向對象的程序設計中,各個對象都是公用的

C.在面向對象的程序設計中,各個對象之間相對獨立,相互依賴性小

D.上述3種說法都不對C。【解析】面向對象的程序設計是用對象模擬問題領域中的實體,各對象之間相對獨立,相互依賴性小,通過消息來實現對象之間的相互聯系。

7.軟件工程的理論和技術性研究的內容主要包括軟件開發技術和()。

A.消除軟件危機

B.軟件工程管理

C.程序設計自動化

D.實現軟件可重用B。【解析】基于軟件工程的目標,軟件工程的理論和技術性研究的內容主要包括軟件開發技術和軟件工程管理。

8.在對象方法中,一個對象請求另一個對象為其服務的方式是通過發送()。

A.調用語句

B.命令

C.H令

D.消息D。【解析】在面向對象方法中,對象之間通過消息進行通信。消息中只包含傳遞者的要求,但并不指示接受者應該怎么完成這些處理。

9.下列選項中,是軟件調試技術的是()。

A.錯誤推斷

B.集成測試

C.回溯法

D.邊界值分析C。【解析】軟件調試技術包括強行排錯法、回溯法和原因排除法。邊界值分析、錯誤推斷都是黑盒測試的方法。

10.數據庫DB、數據庫系統DBS、數據庫管理系統DBMS之間的關系是()。

A.DB包括DBS和DBMS

B.DBMS包括DB和DBS

C.DBS包括DB和DBMS

D.沒有任何關系C。【解析】數據庫系統(DBS)由數據庫(DB)、數據庫管理系統(DBMS)、數據庫管理員、硬件平臺和軟件平臺5個部分組成,因此DB和DBMS都是DBS的組成部分。11.下列()不是高級程序設計語言。

A.FORTRAN

B.Java

C.C++

D.VisualASMD。【解析】高級語言是一類人工設計的語言,因為它對具體的算法進行了描述,所以又稱為算法語言。它是面向程序設計獨立于計算機的硬件。目前,計算機常用的高級語言有:BASIC語言、FORTRAN語言、COBOL語言、PASCAL語言、C語言、PROLOG語言、而當前流行的,面向對象的程序設計語言有C++和用于網絡環境的程序設計語言Java等。

12.16根地址總線的尋址范圍是()。

A.531KB

B.64KB

C.640KB

D.1MBB。【解析】假設地址總線有n條,內存的尋址范圍是2n。

13.在一所大學中,每個系都有自己的局域網,則連接各個系的校園網()。

A.是廣域網

B.還是局域網

C.是地區網

D.這些局域網不能互連B。【解析】廣域網是指遠距離的計算機互聯網絡,分布范圍可達幾千千米乃至上萬千米甚至跨越國界、州界、遍及全球范圍。局域網是指一個局部區域中的、近距離的計算機互聯網絡,通常采用有線方式連接,分布范圍從幾百米到幾千米。例如,一座大樓內或相鄰的幾座樓之間的互聯網絡。一個單位、學校內部的網絡多為局域網。

14.下列關于信息加密的敘述中,正確的是()。

A.加密通過加密算法實現

B.加密前的文件稱為密文

C.加密后的文件稱為明文

D.將明文變為密文的過程稱為解密A。【解析】一般人們將加密前的文件稱為明文,而加密后的文件稱為密文,因此加密的目的就是將明文變為密文。而反過來將密文變為明文的過程則稱為解密。

15.下列關于域名和IP地址的敘述中,不正確的是()。

A.在Internet中訪問一臺主機必須使用它的主機名

B.200.201.202.203是一個C類IP地址

C.IP地址采用的是分層結構

D.主機名與IP地址是一一對應的A。【解析】每臺直接連接到Internet上的計算機、路由器都必須有唯一的IP地址。IP地址是Internet賴以工作的基礎。Internet中的計算機與路由器的IP地址采用分層結構,它是由網絡地址與主機地址兩部分組成。對于C類地址,其網絡地址空間長度為21位,主機地址空間長度為8位,C類IP地址范圍從:l92.0.0.0~223.255.255.255。主機名與它的IP地址一一對應,因此在Internet上訪問一臺主機既可以使用它的主機名,也可以使用它的IP地址。

16.Java語言中。負責并發管理的機制是()。

A.垃圾回收

B.虛擬機

C.代碼安全

D.多線程D。【解析】多線程是Java程序的并發機制,它能同步共享數據、處理不同的事件。

17.下列描述中,錯誤的是()。

A.Java要求編程者管理內存

B.Java的安全性體現在多個層次上

C.Applet要求在支持Java的瀏覽器上運行

D.Java有多線程機制A。【解析】為了充分利用資源,Java有一個系統級的線程,用來對內存的使用進行跟蹤,它可以在系統空閑時對不用的內存空間進行回收,從而使程序員從繁忙的內存管理中解放出來。

18.Java為移動設備提供的平臺是()。

A.J2MEB.J2SE

C.J2EED.JDK5.0A。【解析】Java2平臺包括:J2ME平臺、J2SE平臺和J2EE平臺。其中:J2ME是為嵌入式和移動設備提供的Java平臺;J2SE是面向企業級應用與服務的綜合性標準開發平臺;J2EE是面向大型企業級用容器管理專用構件的應用平臺。而JDK5.0是一個Java開發軟件包。

19.JDK中提供的文檔生成器是()。

A.javadoc.exe

B.javap.exe

C.java.exe

D.javaprof.exeA。【解析】在JDK中:javadoc.exe是文檔生成器,將Java源代碼和包以MML格式生成AP文檔;java.exe是Java解釋器;javap.exe是Java反匯編器;javaprof.exe是Java剖析工具,提供解釋器剖析信息。

20.下列不屬于Swing中構件的是()。

A.JPanel

B.JTable

C.Menu

D.JFrameC。【解析]JPanel是Swing的中間容器;JTable是Swing中可編輯信息的構件;JFrame是Swing的頂層容器。閱讀下面程序

importjava.io.*;

publicclassTypeTransition{

publicstaticvoidmain(Stringargs[]){

chara=’h’;

inti=100;

intJ=97;

intaa=a+i;

System.out.println("aa="+aa);

charbb=(char)j;

System.out.println("bb="+bb):

}

}

如果輸出結果的第二行為bb=a,那么第一行的輸出結果是()。

A.aa=I

B.aa=204

C.aa=v

D.aa=156B。【解析】本題考查的是Java的基本數據類型及其運算。程序開始生成了一個字符型變量a和3個整型變量i、j、aa。而整型變量aa的初始值是a+i,其中a是一個字符

型變量。如何進行加法運算呢?Java語言規定,char型數據可以自動轉換成int類型,轉換的結果就是該字符的ASCIl碼值。因此,整型變量aa的初始值為字符”h”的ASCIl碼值加上l00。如果記住h的ASCIl碼值是104,則直接就確定aa的初始值是204,選項B為正確答案。如果記不得h的ASCIl碼,題目中則給出提示。題目中說”輸出結果的第二行為bb=a”,也就是字符bb的值為字符a,bb的生成語句是charbb=(char)j,是把整型變量j的值強制轉換為字符型。同樣,把ASCIl碼值為j(97)所對應的字符賦值給bb。顯然,字符a的ASCIl碼值為97,字符b的ASCIl碼值為98,依次類推,字符h的ASCIl碼為l04。因此,本題的正確答案是B。

22.閱讀下面程序

publicclassOperatorsAndExpressions(

voidequalsMethodl(){

Stringsl一newString("howareyou");

Strings2=newString("howareyou");

System.out.println(s1==s2):

}

publicstaticvoidmain(Stringargs[]){

OperatorsAndExpressionsOperAndExp=newOper-

atorsAndExpressions

();

//用于復合類型數據的”==”運算符

OperAndExp.equalsMethodl();

}

}

程序運行結果是()。

A.==

B.true

C.false

D.equal

C。【解析】本題考查的是Java語言中運算符的特殊用法。相等比較運算符"==",不僅可用于基本類型的數據之間的比較,還可以用于復合類型數據之間的比較。但是,對于復合類型數據的"=="運算,其比較的目標是兩個操作數是否是同一個對象。如果需要比較兩個對象的值是否相同,則可以調用equals()方法。題目中函數equalsMethodl()的代碼非常簡單,首先生成兩個字符串對象sl和s2,然后輸出表達式"sl==s2"的結果。根據上面介紹的相等比較運算符的用法,字符串對象sl和s2是復合類型數據,因此表達式"sl==s2"比較的是sl和s2是否同一個對象。顯然,sl和s2雖然具有相同的值,即"howareyou",但它們是兩個不同的對象。因此,本題的正確答案是C。23.閱讀下面代碼

if(x==0){System.out.println("冠軍");)

elseif(x>一3){System.Out.println("亞軍");}

else{System.out.println("季軍");}

若要求打印字符串”季軍”,則變量X的取值范圍是()。

A.x=d&x<=-3

B.x>O

C.x>-3

D.x<=-3

23.D。【解析】本題考查的是條件分支語句if-else。if-else根據判定條件的真假來執行兩種操作中的一種。當條件為真時,執行if語句后面的代碼塊;當條件為假時,執行else后面的代碼塊。題目中的代碼段是一個if-else的嵌套語句,根據if-else語句的執行過程來進行分析。當x的值為0時,布爾表達式"x==0"的結果為真,就輸出”冠軍”;當x的值不為0時,則執行else語句中的內容。else語句中的代碼又是一個if-else語句,還是和上面一樣進行分析。當X的值不等于0且大于-3時,布爾表達式”x>-3”的結果為真,輸出"亞軍";當x的值不等于0且不大干-3,也就是X的值不等于0同時x的值小于等于-3時,則輸出"季軍"。經過上述分析可知,要想輸出"季軍",x所滿足的條件為x!=O&x<=-3,但是當x<=-3時,x的值一定不會為0。所以,X所滿足的條件可以簡寫為x<=-3。因此,本題的正確答案為D。

24.下列關于構造方法的敘述中,錯誤的是()。

A.Java語言規定構造方法名與類名必須相同

B.Java語言規定構造方法沒有返回值,但不用void聲明

C.Java語言規定構造方法不可以重載

D.Java語言規定構造方法只能通過new自動調用C。【解析】本題考查的是構造方法的使用。Java語言中,構造方法是一種特殊的方法,是為對象初始化操作編寫的方法,用它來定義對象的初始狀態。Java中的每個類都有構造方法,它也是由方法名、參數和方法體組成的。構造方法有如下特點:

·構造方法的名字必須與類名相同。

·構造方法不返回任何數據,但不用void來聲明。

·用戶不能直接調用構造方法,必須通過關鍵字new自動調用。

·構造方法可由用戶在類中定義,默認時由Java語言自動生成。但它是個空方法,變量被賦予該數據類型的默認值。

·在構造方法實現中,可以進行方法重載,即定義多個構造方法。重載構造方法的目的是使類具有不同的初始值,為類對象的初始化提供方便。根據上述構造方法的特點可知,本題選項C的說法是錯誤的。

25.下列適配器類中不屬于事件適配器的是()。

A.MouseAdapter

B.KeyAdapter

C.ComponentAdapter

D.FrameAdapter

D。【解析】本題考查java.awt.event包中定義的適配器類。該包中定義的適配器類包括①ComponentAdapter構件適配器;②ContainerAdapter容器適配器;③FocusAdapter焦點適配器;④MouseAdapter鼠標適配器;⑤KeyAdapter鍵盤適配器⑥WindowAdapter窗口適配器,由此可知本題答案為D。26.下列類中屬于字節輸入抽象類的是()。

A.FileInputStream

B.ObjectInputStream

C.FiterInputStream

D.InputStream

D。【解析】在Java中定義了兩種類型的流,字節型和字符型,這兩種流分別用4個抽象類表示:InputStream,OutputStream,Reader,Writer,其中InptutStream和OutStream表示字節流,Reader和Reader是表示字符流,所以字節輸入抽象類為InptutStream。27.能向內部直接寫入數據的流是()。

A.FileOutputStream

B.FileInputStream

C.ByteArrayOutputStream

D.ByteArraylnputStream

C。【解析】本題考查Java的內存讀寫。在java.io中,還提供了ByteArrayInputStream、ByteArrayoutputStream和StringBufferInputStream類可直接訪問內存,它們是InputStream和OutputStream的子類。用ByteArrayOutputStream可向字節數組寫入數據;ByteArrayInputStream可從字節數組中讀取數據。28.下列運算符中屬于關系運算符的是()。

A.==

B.=

C.+=

D.-=

A。【解析】本題考查Java的關系運算符。B中寫法不正確,C、D均為賦值運算符。29.下列方法中,聲明拋出InterruptedException類型異常的方法是()。

A.suspend()

B.resume()

C.sleep()

D.start()

C。【解析】本題考查線程的基本操作。Java中提供了interrupt方法用來中斷一個線程,當調用一個線程的interrupt方法時,即向該線程發送一個中斷請求。在調用線程的interrupt方法時,如果該線程由于調用了sleep方法或wait方法而正在處于阻塞狀態,那么線程會拋出一個InterruptException異常。30.下列關于System類的敘述中,錯誤的是()。

A.System類是一個final類

B.System類不能實例化

C.System類中沒有定義屬性

D.System類主要提供了系統環境參數的訪問C。【解析】本題考查System類的基本知識。Systern類是一個final類,所有的方法都用類變量來調用,對System類不可能實例化。System類主要用來提供標準輸入/輸出和系統環境信息的訪問設置。而System類的屬性有:①publicstaticfinalInputStreamin;標準輸入;②publicstaticfinalOutputStreamout;標準輸出;③pubhcstaticfinalPrintStreamerr;標準錯誤輸出。閱讀下面程序

publicclassIncrement{

publicstaticvoidmain(stringargs[]){

intC;

c=5:

System.out.println(c);

System.out.println(c++):

System.out.println(c);

}

}

程序運行結果是()。

A.5

6

6

B.5

5

6

C.6

7

7

D.6

6

6

B。【解析】本題考查的是Java增量運算符"++"。x++是先使用后加l,即首先使用X的值進行表達式的計算,然后才對x的值加1。而++x是先加1后使用,即首先對x的值加1,然后使用x的值進行表達式的計算。本題首先生成一個整型變量C,其初始值為5。第一條輸出語句輸出c的初始值,即5。然后,第二條輸出表達式c++的結果,即先輸出C的值,然后才對c的值加1,所以,第二條輸出語句輸出的是5,輸出后c的結果才為6。最后一條輸出語句輸出結果為6。因此,本題的正確答案為B。32.下列敘述中,錯誤的是()。

A.JavaApplication與Applet所用編譯命令相同

B.通常情況下JavaApplication只能有一個main()方法

C.JavaApplet必須有HTML文件才能運行

D.JavaApplet程序的.class文件可用Java命令運行

D。【解析】本題考查的是Java中的Applet以及Applet與Application的區別。Applet是能夠嵌入HTML語言中,并能夠在瀏覽器中運行的類。Applet的運行環境是Web瀏覽器,所以必須建立HTML文件,告訴瀏覽器如何加載與運行Applet。因為Applet是不能直接通過Java命令行啟動運行的。所以選項D的說法錯誤。33.下列關于Java語言中線程的敘述中,正確的是()。

A.線程由代碼、數據、內核狀態和一組寄存器組成

B.線程間的數據是不共享的

C.用戶只能通過創建Thread類的實例或者定義和創建Thread子類的實例,建立和控制自己的線程

D.因多線程并發執行而引起的執行順序的不確定性可能造成執行結果的不確定

D。【解析】本題考查線程的基本知識。線程與進程在概念上是相關的,線程是由表示程序運行狀態的寄存器、程序計數器、棧指針以及堆棧組成,它不包含進程地址空間中的代碼和數據。代碼所操作的數據是Java線程模型中的一個組成部分,數據與代碼是獨立的。數

據可以被多個線程共享,也可不共享。Java語言中提供兩種創建線程的方法,一種是通過繼承Thread類創建線程,另一種是通過實現Runnable接口來創建線程。34.處理對象傳輸的接口是()。

A.Serializable

B.C:loneable

C.hemListener

D.ActionListener

A。【解析】處理對象傳輸就是把對象串行化。Java語言中,如果要串行化某些類的對象,這些類就必須實現Serializable接口。35.在讀取二進制數據文件的記錄時,為了提高效率常

常使用的一種輔助類是()。

A.InputStream

B.FileInputStream

C.StringBuffer

D.BufferedReader

C。【解析】本題考查Java語言的輸入/輸出流。InputStream類、FilelnputStream類和BufferedReader類都是Java語言中和輸入輸出直接相關的類,不屬于輔助類,因此可以直接判斷出選項C為正確答案。36.在Applet中顯示文字、圖形等信息時,應使用的方法是()。

A.init()

B.start()

C.paint()

D.destroy()

C。【解析】paint()是與Applet顯示相關的方法,由它來具體執行Applet的繪制功能。init()方法用于初始化Applet,start()方法用于激活Applet。在init()方法完成后,將調用start()方法,而且在Applet每次顯示時都要調用。destroy()方法用于徹底終止Applet。37.關于線程的生命周期以下狀態正確的是()。

A.新建狀態、可運行狀態、阻塞狀態、恢復狀態和終止狀態

B.新建狀態、運行狀態、阻塞狀態、恢復狀態和終止狀態

C.新建狀態、可運行狀態、運行狀態、阻塞狀態和終止狀態

D.新建狀態、可運行狀態、運行狀態、恢復狀態和終止狀態

C。【解析】線程生命周期中出現的狀態包括:新建狀態、可運行狀態、運行狀態、阻塞狀態和終止狀態。38.Thread類中能運行線程的方法是()。

A.resume()

B.start()

C.run()

D.init()

C。【解析】resume()是Thread類提供的用于線程控制的方法;start()是Thread類中的方法,新建的線程不會自動運行,必須調用線程的start()方法才能運行該線程;run()是Thread類中的方法,在該方法中定義了線程的具體行為,線程開始執行時,就是從它的run()方法開始執行的,就像Java應用程序從main()開始、Applet從ink()開始一樣;init()不是Thread類中的方法。39.以下不是APPLET標記的選項是()。

A.PARAM

B.BODY

C.CODEBASE

D.ALT

B。【解析】標記的一般格式是:

[CODEBASE=codebaseURL]

CODE=appletFile

[ALT=alternateText]

[NAME=appletlnstanceName]

WIDTH=pixels

HEIGHT=pixels

[ALIGN=alignment]

[VSPACE=pixels]

[HSPACE=pixels]

[ARCHIVE=archiveFiles]

>

[

ue>]

[

ue>]

[alternateHTML]

因此可以看出,選項B不是APPLET標記。40.在Java中,與數據庫連接的技術是()。

A.開放數據庫連接

B.Java數據庫連接

C.數據庫廠家驅動程序

D.數據庫廠家的連接協議B。【解析】開放數據庫連接(ODBC,OpenDatebaseConnectivity),它是用C語言定義的。由于J2EE要求與Java綁定,因此規定使用Java數據庫連接(JDBC,JavaDataBaseConnectivity),作為Java與數據庫連接的技術。基本操作題(共18分)

本題定義了一個求兩個數的最大值的方法max,并調用該方法計算67和23的最大值。

publicclassjaval{

publicstaticvoidmain(String[]args){

javaltemp=newjaval();

intres=max(67,23);

System.out.println("res="+res);

}

staticintmaX(){

intmaxNum;

if(a>b)

else

maxNum=b;

}

}第1處:inta,intb

第2處:maxNum=a

第3處:returnmaxNum

【解析】第1處定義max()方法中的兩個整型形參;第2處將兩者中較大的賦給maxNum;第3處返回最大值。

三、簡單應用題(共24分)

本題的功能是對下拉菜單項的操作,包括添加和刪除。頁面包括一個下拉菜單、一個文本框和兩個按鈕“刪除”和“添加”,選中下拉菜單的一項后,可以通過“刪除”按鈕從下拉菜單中刪除該項,在文本框中填入字符串后,單擊“添加”按鈕就可以將該項添加到下拉菜單中,所有信息都將顯示在右側的文本域中。

importjava.awt.*;

importjava.awt.event.*;

publicclassjava2extendsjava.applet.Appletimple-

mentshemListener,ActionListener

{Choicechoice;

TextFieldtext;

TextAreaarea;

Buttonadd,del;

publicvoidinit().

{choice:newChoice();

text=newTextField(8);

area:newTextArea(6,15);

choice.add("音樂天地");

choice.add("武術天地");

choice.add("象棋樂園");

choice.add("交友聊天");

add=newButton("添加");

del=newButton("刪除");

add.addActionListener(this);

del.addActionListener(this);

choice.addItemListener(this);

add(choice);

add(del);add(text);add(add);add(area);

}

publicvoiditemStateChanged(hemEvente)

{Stringname=;

intindex=choice.getSelectedIndex();

area.setText("\n"+index+":"+name);

}

publicvoidactionPerformed(ActionEvente)

{if(e.getSource()==add||e.getSource()==

text)

{Stringname=text.getText();

if(name.length()>0)

{choice.add(name);

choice.select(name);

area.append("\n添加"+name);

}

}

elseif(e.getSource()==del)

{choice.remove();

area.append("\n刪除"+choice.getSelectedItem

());

}

}

}第1處:choice.getSelectedltem()

第2處:choice.getSelectedIndex()

【解析】第1處是獲取當前選中項的數據;第2處清除選中項的索引號。綜合應用題(共18分)

本題的功能是定義自已的組件類。窗口中排布著12

個按鈕,鼠標移動按鈕時,按鈕背景顏色改變,用鼠標單擊

按鈕時,后臺將顯示該按鈕對應的字符。

importjava.awt.*;

importjava.awt.event.*;

importjava.util.*;

classjava3extendsFrame{

Stringkeys="l23456789*0#";

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論