第一次测试总结
1.在Java中:long类型占8 个Byte,float类型占4个Byte。所以long类型表示的范围大于float类型
答案 : F
解析 : 数值范围大小和占用的字节没有关系
浮点数在内存中的二进制值不是直接转换为十进制数值,而 是按照公式计算得出,通过公式,虽然只用到了4个字节,但 是浮点数却比长整型的最大值要大
2.break语句只能用于循环语句中,它的作用是跳出循环
答案 : F
解析 : 还可以用在swich选择语句
3.在JAVA中,按精度从小到大的顺序排列,各种基本数据类型自动转换的顺序是:( )。
(2分)
A.byte-short(char)- int-long-float-double
B.byte-short(char)- int-float-long-double
C.byte-short- int(char)-long-float-double
D.byte(char)-short- int-long-float-double
答案 : A
解析 : 当java程序在进行赋值或运算时,精度小的自动转化为 精度大的数据类型,数据类型按精度大小排序(由小到 大):byte-short(char)- int-long-float-double
有多种数据类型混合运算时,系统首先自动将所有数据转换为精度更高的那种数据类型,再进行计算。
当把精度大的数据类型赋值给精度小的数据类型,就会报错,反之就会自动类型转换。
(byte,short)和char之间不会相互自动转换
byte,short,char三者可以计算,在计算时首先转换为int类型
boolean不参与转换;
混合运算表达式结果的类型自动提升为其中最大的数据类型
4.Java语句System.out.println(" x = " + 5 + 6);输出的结果是
(2分)
A.x=56
B.x=11
C.x=+5+6
D.抛出异常
答案 : A
解析 : 当字符串是数字并且用连接符与数字相连会将相连的数字转化为字符串并且连接
5.Java中,以下程序输出的结果是。
public class Main {
public static void main(String[] args) {
short s = 'b';
s = s + 1;
System.out.println(s);
}
}
(2分)
A.99
B.c
C.编译报错
D.67
E.C
答案 :C
解析 : 混合运算表达式结果的类型自动提升为其中最大的数据类型
等式右侧将转换为int类型,高精度转向低精度需要进行强制转换。s=(int)(s+1);
6.下列语句序列执行后,k 的值是( )
int x=6, y=10, k=5;
switch( x%y ){
case 0: k=x*y;
case 6: k=x/y;
case 12: k=x-y;
default: k=x*y-x;
}
(2分)
A.60
B.5
C.0
D.54
答案 : D
解析 : case语句后没用break,会造成语句穿透
编程题
1.猴子吃桃问题
(10分)
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时(还没吃),见只剩下一个桃子了。求第一天共摘了多少。
请注意:含有main方法的类(class)的名字必须命名为Main,否则调试不成功。
输入格式:
不需要输入。
输出格式:
输出:第一天共摘了多少个桃子
输入样例:
输出样例:
第一天共摘了1534个桃子
public class test1 {
public static void main(String[] args) {
int temp=1;
for(int i=1;i<10;i++){
temp= (1+temp)*2;
}
System.out.println(temp);
}
}
2.判断一个数是否为回文数
(10分)
如果一个数与它的反转数相等,则该数为回文数。输入一个数,判断是否为回文数。
输入格式:
输入一个数
输出格式:
若XX是回文数,则输出“XX 是回文数”,若不是,则输出“XX 不是回文数”
输入样例1:
6234326
输出样例1:
6234326 是回文数
输入样例2:
123456
输出样例2:
123456 不是回文数
import java.util.Scanner;
public class test2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String next = scanner.next();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(next);
if (stringBuilder==null){
return;
}
// StringBuilder reverse = stringBuilder.reverse();
// System.out.println(reverse);
if (stringBuilder.reverse().equals(stringBuilder)){
System.out.println(next+"是回文数");
}else {
System.out.println(next+"不是回文数");
}
}
}
3.字符串排队
(10分)
从键盘上输入若干个英文单词,请按照字典顺序将这些单词输出。
输入格式:
在一行中输入不超过20个英文单词,用空格分开。
输出格式:
在一行中输出前面输入的英文单词,按照字典序顺序输出,用空格作为分割符。
输入样例:
I am a student
输出样例:
I a am student
import java.util.Arrays;
import java.util.Scanner;
public class test3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
String[] s1 = s.split(" ");
Arrays.sort(s1);
for (String s2 : s1) {
System.out.print(s2+" ");
}
// char[] chars = s.toCharArray();
// Arrays.sort(chars);
// for (char aChar : chars) {
// System.out.print(aChar);
// }
}
}
4.去掉重复的数据
(10分)
在一大堆数据中找出重复的是一件经常要做的事情。现在,我们要处理许多整数,在这些整数中,可能存在重复的数据。
你要写一个程序来做这件事情,读入数据,检查是否有重复的数据。如果有,去掉所有重复的数字。最后按照输入顺序输出没有重复数字的数据。所有重复的数字只保留第一次出现的那份。
输入格式:
你的程序首先会读到一个正整数 n,1≤n≤100000。
然后是 n 个整数,这些整数的范围是 [1, 100000]。
输出格式:
在一行中按照输入顺序输出去除重复之后的数据。每两个数据之间有一个空格,行首尾不得有多余空格。
输入样例:
5
1 2 2 1 4
输出样例:
1 2 4
import java.util.LinkedHashSet;
import java.util.Scanner;
public class test4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
LinkedHashSet<Integer> hashSet = new LinkedHashSet<>();
int i = scanner.nextInt();
for (int j = 0; j < i; j++) {
hashSet.add(scanner.nextInt());
}
for (Integer integer : hashSet) {
System.out.print(integer+"\t");
}
}
}