javaSE习题 第三章 运算符、表达式和语句
问答:
1.下列System.out.printf的结果是什么?
int a=100,x,y; x=++a; y=a--; System.out.printf("%d,%d,%d",x,y,a);
101,101,100
2.下列哪句语句有错误?
int x=0; x=5.0/2;//不能把double型赋给整型 float y=12.5F; y=5.0/2;//不能把double型赋给float型
3.下列哪句语句有错误?
byte x=32; char c='a'; int n=c-x; c=c-x;//c-x转成int型
4.下列表述正确的是(A)
A.表达式“12+56>34”的值是true
B.表达式“12+56||34”是非法表达式
C.表达式“x+y=12”是非法表达式
D.表达式“12+56>34”的值是13
5.对于一个整数m,m<<1的结果一定是2*m吗?
不一定,万一超出范围引起越界
6.对于2个int类型的变量
int m=120,n=240;
那么,m^m和m^n^n结果分别是多少?
0,240(^表示异或)
7.下列System.out.printf的结果是什么?
int x=10,y=10,z=10; if(x>9) { y=100; z=200; } else { y=-100; } z=-200; System.out.printf("%d,%d,%d", x,y,z);
10,100,-200
8.下列for语句的执行结果是什么?
for(int i=1;i<=4;i++) { switch(i) { case 1:System.out.printf("%c",'a'); case 2:System.out.printf("%c",'b'); break; case 3:System.out.printf("%c",'c'); case 4:System.out.printf("%c",'d'); break; } }
abbcdd
9.下列System.out.printf执行的输出结果是?
char[] a= {'a','b','c','d','e'}; for(int i=0;i<a.length/2;i++) { char c=a[i]; a[i]=a[a.length-(i+1)]; a[a.length-(i+1)]=c; } System.out.printf("%c%c%c%c%c",a[0],a[1],a[2],a[3],a[4]);
edcba
10.下列System.out.printf执行的输出结果是?
int[] a= {3,4,1,2,-6}; for(int i=0;i<a.length;i++) { for(int j=i+1;j<a.length;j++) { if(a[j]<a[i]) { int n=a[j]; a[j]=a[i]; a[i]=n; } } } System.out.printf("%d,%d,%d,%d,%d",a[0],a[1],a[2],a[3],a[4]);
-6,1,2,3,4
11.下列程序输出结果是什么?
public class E { public static void main(String[] args) { int x=1,y=6; while(y-->0) { x--; } System.out.print("x="+x+",y="+y); } }
x=-5,y=-1
作业题:
1.有如下一个函数:
编写一个java程序,从键盘输入一个x值,程序输出一个y值。
public static void main(String[] args) { int y; Scanner sc=new Scanner(System.in); int x=sc.nextInt(); if (x<0) { y=x*2-1; } else if(x==0) { y=-1; } else { y=3*x-1; } }
2.编写一个java程序,使用while循环语句计算1-1000之间能被3和7同时整除的整数之和。
public static void main(String[] args) { int sum=0; for(int i=1;i<10000;i++) { if(i%3==0&&i%7==0) { sum+=i; } } System.out.println(sum); }
3.编写一个java程序,使用for循环计算8+88+888+8888+88888+……的前10项之和。
public static void main(String[] args) { long sum=0,temp=0; for(int i=0;i<10;i++) { temp+=8*Math.pow(10,i); sum+=temp; } System.out.println(sum); }
4.编写一个java程序,计算1-1/3+1/5-1/7+1/9-1/11……前10000项之和。
public static void main(String[] args) { double sum=0,temp; for(double i=0;i<10000;i++) { temp=Math.pow(-1, i)*1.0/(2.0*i+1.0); sum+=temp; } System.out.println(sum); }
5.编写一个java程序,计算1+2!+3!+4!……从第100项到第200项之和。
public static void main(String[] args) { long sum=0; for(int i=100;i<=200;i++) { sum+=factoria(i); } } public static long factoria(int i) { if(i==1) return i; else return factoria(i-1)*i; }