如下代码的输出是
package Test;
public class Test {
private static void test(int[] arr) {
for (int i = 0; i < arr.length; i++) {
try {
if (arr[i] % 2 == 0) {
throw new NullPointerException();
} else {
System.out.print(i);
}
} finally {
System.out.print("e");
}
}
}
public static void main(String[]args) {
try {
test(new int[] {0, 1, 2, 3, 4, 5});
} catch (Exception e) {
System.out.print("E");
}
}
}
可以得到的结论是( )
A. 编译出错
B. eE
C . Ee
D . eE1eE3eE5
E. Ee1Ee3Ee5
答案:B
由于arr[0] =0,所以在进入 test()方法里面会在第一个if 上抛出一个 NullPointerException,接着会执行 finally 的语句, (finally语句先于 return 和 throw语句执行),输出一个’e,然后回到 main方法中,由于捕捉到异常,所以进入到catch语句中,然后打印一个’E’,所以最终结果为”eE”
以下程序段的输出结果是
char s[]="\\123456\123456\t";
printf("%d\n",strlen(s));
A . 12
B. 13
C. 16
D. 以上都不对
答案:A
这里主要是考察转义字符的使用:\ \123 \t 这些都是转义字符,在计算字符串长度时,这些转移字符代表一个字符。
注意这里的 \123 ,在ascii中,‘\ddd’表示八进制,而’\xdd’表示十六进制,(d是一个数字占位符,表示八进制,x表示十六进制)。所以\123的十进制为83,在ASCII码表中对应的是 S
发表于 2016-03-10 10:02:20
若线性表最常用的操作是存取第n个元素及其前驱和后继元素的值,为节省时间应采用的存储方式()
A. 单链表
B. 双向链表
C. 单循环链表
D. 顺序表
答案:D
单链表只有一个指针域,是指向直接后继的。没有指向直接前驱。
循环链表也是只指向直接后继。
只有双向链表有两个指针域,分别指向直接前驱和后继。存取时需修改两个指针;
顺序表是在计算机内存中以数组的形式保存的线性表。它是数组,不用考虑修改指针,只用修改下标
相比较于双向链表,顺序表更为节省时间