1. 首頁
  2. 面試

java面試題分析

java面試題分析

1 定義一個名為a的單精度實型一維陣列,長度為4,所有元素的初值均為0的數定義語句是________________

【分析】按照一般資料定義語句的格式,可以直接寫出方法一(參看答案);考慮到所有元素均賦初值時可以省略陣列長度,可以寫出方法二(參看答案);考慮到不省略陣列長度,給部分元素賦初值時,所有未賦初值的元素均有空值(對數值型陣列來說,初值為0),可以寫出方法三(參看答案);考慮到選用靜態型,不賦初值所有元素也自動賦予。空值(對數值型陣列來說,初值為0),可以寫出方法四(參看答案)。

【答案】方法一:float a[4]={0.0,0.0,0.0,0.0};

方法二:float a[]={ 0.0,0.0,0.0,0.0};

方法三:float a[4]= {0.0};

方法四: static float [4];

2 下列陣列定義語句中,錯誤的是()

① char x[1]=a; ②auto char x[1]={0};

③ static char x[l]; ④ char x[l];

【分析】顯然答案①中給字元型陣列賦初值的格式不對(不能直接賦予字元常量,必須用花括號括住),所以備選答案①是符合題意的答案。

【答案】 ①

3 用"氣泡排序法"對n個數據排序,需要進行n一1 步。其中第k步的任務是:自下而上,相鄰兩數比較,小者調上;該操作反覆執行n-k次。現在假設有4個數據:4、l、3、2要排序,假定4為上、2為下,則利用"氣泡排序法"執行第2步後的結果是_________________。

【分析】開始排序前的排列執行第1步後的排列執行第2步後的排列

4 1 1

1 4 2

3 2 4

2 3 3

【答案】 l、2、4、3

4 用"選擇排序法"對n個數據排序,需要進行n-1步。其中第k步的任務是:在第k個數據到第n個數據中尋找最小數,和第k個數據交換。現在假設有4個數據:4、1、3、2要排序,則利用"氣泡排序法"執行第2步後的結果是______________________。

【分析】 開始排序前的排列為: 4 1 3 2

執行第1步後的排列為: 1 4 3 2

執行第2步後的排列為: 1 2 3 4

【答案】1、2、3、4

5 下列陣列定義語句中,正確的是()

① int a[][]={1,2,3,4,5,6}; ② char a[2]「3]=a,\b;

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

【分析】C語言規定,二維陣列定義時不允許省略第二維的長度,所以備選答案①④是錯誤的。C語言還規定,定義字元型陣列時不允許直接使用"字元常量"的方式賦初值,所以備選答案②也是錯誤的。顯然備選答案③符合題意。

【答案】③

6 定義一個名為"s"的字元型陣列,並且賦初值為字串"123"的錯誤語句是()

①char s[]={‘1,\2,\3,\\0 }; ②char s「」={"123"};

③char s[]={"123\n"}; ④ char s[4]={1,\2,\3};

【分析】備選答案①中省略了陣列長度,所以每個元素都賦了初值,共計4個元素,初值依次為l、\2、\3、\,最後一個元素的值為字串結束標記,所以陣列S中存放的是字串"123",該答案不符合題意(即正確的);備選答案③中直接賦予字串作為初值所以陣列s的長度為4,其中的初值是字串"123",不符合題意(即正確的);備選答案③中也是給陣列s賦予字串的初值,但是字串不是"123",而是"123",所以該答案符合題意(即錯誤的);顯然答案④也不符合題意(即正確的)。下面來分析答案④為什麼是正確的,該答案給出了陣列長度為4,賦初值時僅給前3個元素賦予字元1 、 2、\3,第 4個元素沒有賦初值,按照 C語言的規定,也有初值,且初值為空值, 對字元型陣列來說,空值就是\0,即字元率結束標記,所以陣列S中存放的也是字串" 123"。

【答案】③

7 設有下列資料定義語句,則陣列元素x[i]的值是__________________。

int i= 3,x[4]={ 1,2,3};

【分析】由於i的初值為3,所以x[i]就是x[3]。由於陣列的下標是從0開始的,所以x[3]實際上是陣列x的第4個元素。從定義語句中可以看出陣列x的前3個元素的初值依次為1、2、3,第4個元素沒有賦初值,其初值自動設為空值,對整型陣列來說,空值是0,顯然x[3」的值是0.

【答案】0

8 設有下列資料定義語句,則 puts(&s[0][0])的輸出結果是__________; puts(s[0]〕

輸出結果是_____________。

char s[4][5]={{l,\},{"23"},"345","4"};

【分析】首先分析字元型陣列s的初值,s的第1行中存放的字串是"1"、第2行中存放的符串是"23"、第3行中存放的字串是"345"、第4行中存放的字串是"4"。puts()函式的功能是輸出從"引數"處開始存放的字串中有效字元。按照上的分析,第1個輸出的結果是從"&S[0][0]"開始的字串,這個地址對應的就是數s的第1行,所以輸出結果為1;第2個輸出的結果是從“s[]”開始的字串,這個址對應的也是陣列s的第1行,所以輸出結果也為1。

【答案】 1

1

9 設有下列資料定義語句:

char a[4][10]={"11","22","33","44"};

則 puts(strcat(a[1],a[3]))的輸出結果是________________;

putS(strcpy(a[0],a[2]))的輸出結果是________________。

【分析】字元陣列a共有4行,每行存放一個字串。這4行的首地址依次為:a[0]、a[1]、a[2]、a[3],從這4個地址開始存放的字串依次為:"11"、"22"、"33"、"44"。strcat(a[1],a[3])函式呼叫的功能是將s[3]處的字串連線到a[l]的字串後面,所以執行該函式呼叫後的a「l」處的'字串為"2244",而該函式的返回值就是a[1]的首地址,puts()函式的功能就是輸出這個地址存放的字串,由此,第1個輸出的結果就是:2244。同樣理由可以分析strcpy(a[0],a[2])的功能是將a[2]處的字串("33")複製到a[0]處,返回a[0]的地址,puts()輸出的就是a[0]處的字串,結果為:33。

【答案】2244

33

10 設有下列資料定義語句:

char str[2][10]={"abc","ABC"};

則printf("%d",strcmp(str[1],str[0]))的輸出結果是__________;

printf("%d",strcmp(strlwr(str[1],str[0])),str[0]))的輸出結果是_______。

【分析】字元型陣列str中,從str[0]開始存放的字串是"abc"、從str[l]開始存放的字串是"ABC"。strcmp(str[l],str[0])是比較str[l]和str【0」處的兩個字串的大小,由於"ABC"是小於"abc"的,按照srrcmp函式的功能可知,返回值是一個小於0的整數,這是第1個空的答案。再來分析第2個空的答案,strlwr(str[l])函式的功能是將str[l]處的字串中大寫字母改為小寫字母,其返回值是修改後字串的地址。strcmp(stlwr(sir[1]),str[0]))函式的功能是比較str[l]和str[0]處的字串,由於str[l]處的字串已經改為小寫字母了,所以和 str[0]處的字串完全相同,返回值是0,這就是第2個空的答案。

[答案]某個小於0的任意整數 0

11 下列程式的功能是讀取10個實數,然後依次輸出前l個實數和、前2個實數和、…、前9個實數和、前10個實數和。請填寫程式中缺少的語句。

main()

{float f[10],X=0.0;

int i;

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

scanf(" % f", &f[i]);

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

{_______________________

printf("sum of NO %2d----%f",i,x);

}

}

【分析】瀏覽程式清單後,可以發現前一個次數型迴圈是輸入 10個實數存入陣列 f中。後一個次數型迴圈是計算前i個實數和並存入變數X中,然後再輸出這個x的值。程式中所缺少的語句就是實現"計算前i個實數和並存入變數X中"的。當i等於1時,x要等於f[0]的值,即f[i-l]的值;當i等於2時,x要等於f[0] +f[l]的值,即f[0]+f[i-1」的值,此時f[0]的值已經計算並存入變數x中;當i等於3時,x要等於f[0]+f[1]+f[2]的值,即f[0]+f[1]+f[i-l]的值,此時f[0]+f[1]的值已經計算並存入變數x中;由此可以推出:前i個值的計算公式為:x=x+f[i-1],將這個表示式組成語句就是需要填寫的內容。

【答案】 x=x+f[i-l]; 或 x+=f[i-l];

12 執行下列程式的輸出結果是()

① 111ll ②llll ③lll ④ 222

main()

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

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

printf("% 1d", a[i]- a[i一1]);

}

【分析】首先分析陣列a各元素的值,由於是賦初值,很容易看出:a[0]= 1、a[1]=2…、a[4]=5。再分析次數型迴圈共計執行4次(i=1、i=2、i=3、i=4),每次輸出1位整數;[i]-a[i-1],當i=1時,輸出的是2-1=1;當i=2時,輸出的是3-2=l;當i=3時,輸出的是4-3=l;當i=4時,輸出的是5-4=1。整個程式的輸出結果是1111。

【答案】②

13 下列程式的功能是輸入一個5行5列的實數矩陣,然後求出其中的最大數和最小數,並且對調這兩個數後,再輸出,請填寫程式中缺少的語句。

main()

{ float f[ 5][5],max, x;

int i,j,max_l,max_J,min_i,min_J;

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

for(j=0;j<5;j++)

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

f[i][j]=x;

}

max=min=f[0][0];

max_i=max_i=min_i=min_j= 0;

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

for(j=0;j<5;j++)

{if(max

max=f[i][j],max_i=i,max_j=j;

if(min>f[i][j])

___________________

}

f[max_i][max_j]=min;

f