习题
1.(标识符命名)下面几个变量中,那些是对的?那些是错的?错的请说明理由
A. ILoveJava 正确
B. 20 正 确 C . l e a r n @ j a v a @ 不 属 于 标 识 符 命 名 规 则 字 母 、 数 字 、 下 划 线 、 20 正确 C. learn@java @ 不属于标识符命名规则 字母、数字、下划线、 20正确C.learn@java@不属于标识符命名规则字母、数字、下划线、
D. antony.lee 错误 . 不属于标识符 E:正确 F:正确
E. Hello_World 正确
F. 2tigers 正确
2.(if 语句)读入一个整数,判断其是奇数还是偶数
System.out.println("请输入一个整数:"); int x = sc.nextInt(); if (x % 2 == 0) { System.out.println(x + "是偶数"); } else { System.out.println(x + "是奇数"); }
3.(操作符)有如下代码:
int a = 5;
int b = (a++) + (–a) +(++a);
问执行完之后,b 的结果是多少?a = 5 b = (a++) + (--a) + (++a) 5 + 5+ 6 = 16 //b的结果为16
4.(基本类型的运算)一家商场在举行打折促销,所有商品都进行8 折优惠。一位程序员把这个逻辑写成:
short price = …; // 先计算出原价
short realPrice = price * 8 / 10; //再计算出打折之后的价格
问:这段代码是否正确?如果正确,假设price 为100,那计算之后的realPrice值为多少?如果不正确,应该怎么改正?/* 不正确,price的价格为int类型,int类型的数据如果过大,则不能转换成short类型的数据,会造成溢出 price * 8 /10结果为int类型变量,不能转换为shor类型 如果price的价格不大,不用更改 如果过大 ,需要改为int realPrice的数据类型更改为float */
5.(操作符)请说明>>与>>>之间的区别
/* >> : 按位右移运算符。左操作数按位右移右操作数指定的位数。 A = 60 A >> 2 60的二进制111100 右移两位 1111=15 >>>:按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充 A >>> 2 111100 得到15 00001111 /
6.(操作符)有如下代码:
a = (a>b)?a:b;
请问这段代码完成了什么功能。/* 如果 a大于 b 输出a,否则输出b */ int a = 0,b = 0; if(a>b){ System.out.println(a); }else{ System.out.println(b); }
7.(if 语句)读入一个整数,表示一个人的年龄。如果小于6 岁,则输出“儿童” ,6 岁到13 岁,输出“少儿” ;14 岁到18 岁,输出“青少年” ;18 岁到35 岁,输出“青年” ;35 岁到50 岁,输出“中年” ;50 岁以上输出“中老年” 。
System.out.println("请输入一个人的年龄:"); int m = sc.nextInt(); if(m<6){ System.out.println("儿童"); }else if(m<=13){ System.out.println("少儿"); }else if(m<=18){ System.out.println("青少年"); }else if(m<=35){ System.out.println("青年"); }else if(m<=50){ System.out.println("中年"); }else { System.out.println("中老年"); }
8.(switch 语句)读入一个整数,如果是1~5 之间,则分别输出5 个福娃的名
字,否则输出“北京欢迎你” 。System.out.println("请输入一个整数:"); int m1 = sc.nextInt(); switch(m1){ case 1 : case 2 : case 3 : case 4 : case 5 : System.out.println("福娃"); break; default: System.out.println("北京欢迎你"); }
9.(if 语句,赋值操作)*读入三个整数,输出这三个整数中最大的一个。
int a1,a2,a3; int max = 0; System.out.println("请输入第一个整数:"); a1 = sc.nextInt(); System.out.println("请输入第二个整数:"); a2 = sc.nextInt(); System.out.println("请输入第三个整数:"); a3 = sc.nextInt(); if(a1 > a2){ if(a1 > a3){ max = a1; }else{ max = a3; } }else{ if(a2 > a3){ max = a2; }else{ max = a3; } } System.out.println(a1+" "+a2+ " "+a3+"这三个数中的最大值为:"+max);
10.(if 语句)*读入一个表示年份的整数,判断这一年是否是闰年。
如何判断 一个年份是否是闰年:如果这个年份能够被4整除,且不能被100 整除,则这一年是闰年。
例 如,1996 年是闰年,而相应的,1993 年就不是闰年。如果这个年份能够被100整除,则这个数必须要能被400 整除,才是闰 年。
例如,2000 年是闰年,1900 年不是闰年。int year = sc.nextInt(); if((year % 4 == 0 && year % 100!=0) || (year % 100==0 && year % 400 ==0)){ System.out.println(year+"这一年是闰年"); }else{ System.out.println(year+"这一年不是闰年"); }
11.(switch 语句)*完成一个简单的计算器程序。
程序要求如下:
1. 读入两个整数
2. 提示用户选择对这两个整数的操作,即输出
1 : +
2 : -
3 : *
4 : /
请输入您的选择:
读入用户的选择,输出运算结果。int n1,n2,n3; System.out.println("请输入第一个整数:"); n1 = sc.nextInt(); System.out.println("请输入第二个整数:"); n2 = sc.nextInt(); System.out.println("请选择你的操作:"); System.out.println("1:+\n"+"2:-\n"+"3:*\n"+"4:/\n"); n3 = sc.nextInt(); switch(n3){ case 1: System.out.println(n1+"+"+n2+"="+n1 + n2); break; case 2: System.out.println(n1+"-"+n2+"="+(n1 - n2)); break; case 3: System.out.println(n1+"*"+n2+"="+n1 * n2); break; case 4: System.out.println(n1+"/"+n2+"="+n1 / n2); break; default: System.out.println("没有这个选项,请重新输入:"); break;
- (if 语句)*托运计费问题:
- 当货物重量小于20 公斤的时候,收费5 元,
- 大于20 公斤小于100 公斤的时候 ,超出20 公斤的部分按每0.2 元每公斤计费,
- 如果超出100 公斤的时候,超出 的部分按照每公斤0.15 元计算。
- 读入货物的重量,输出计算之后货物的运费。
int weight; double money = 0.0; System.out.println("请输入货物重量:"); weight = sc.nextInt(); if(weight < 20){ money = 5; }else if(weight<100){ money = 5 + (weight - 20)*0.2; }else if(weight>100){ money = 5 + 80*0.2+(weight-100)*0.15; } System.out.println("运费为:"+money);*/
13.if 语句)*中国的个税计算方法:
应税所得为税前收入扣除2000 元(起征点) ,然后超出部分,按照以下税率
收税:
500 5% 2500
500-2000 10% 4000
2000-5000 15% 7000
5000-20000 20% 22000
20000-40000 25% 42000
40000-60000 30% 62000
60000-80000 35% 82000
80000-100000 40% 102000
100000 - ? 45%
例:若月收入15000,则应税所得为15000-2000=13000;总的个人所得税为
(13000-5000)*20% + (5000-2000)*15% + (2000-500)10% + 5005%= 2225
要求:读入一个整数,表示税前收入,输出应当缴纳的个人所得税和税后实
际收入。int rev; double sum = 0; System.out.println("请输入你的收入:"); rev = sc.nextInt(); if(rev<2000){ sum = 0; }else if(rev < 2500){ sum = (rev - 2000) * 0.05 ; }else if(rev <4000){ sum = (500 * 0.05) + (rev - 2500)*0.1; }else if(rev < 7000){ sum = (500 * 0.05) + (1500 * 0.1)+ (rev - 4000)*0.15; }else if(rev < 22000){ sum = (500 * 0.05) + (1500 * 0.1)+ (3000 * 0.15) + (rev - 7000)*0.2; }else if(rev < 42000){ sum = (500 * 0.05) + (1500 * 0.1)+ (3000 * 0.15) + (15000*0.2) + (rev - 22000)*0.25; }else if(rev < 62000){ sum = (500 * 0.05) + (1500 * 0.1)+ (3000 * 0.15) + (15000*0.2) + (20000*0.25) + (rev - 42000)*0.3; }else if(rev < 82000){ sum = (500 * 0.05) + (1500 * 0.1)+ (3000 * 0.15) + (15000*0.2) + (20000*0.25) + (20000 * 0.3) + (rev - 62000) * 0.35; }else if(rev <100000){ sum = (500 * 0.05) + (1500 * 0.1)+ (3000 * 0.15) + (15000*0.2) + (20000*0.25) + (20000 * 0.3) + (20000 *0.35) + (rev - 82000)*0.4; }else if(rev > 10000){ sum = (500 * 0.05) + (1500 * 0.1)+ (3000 * 0.15) + (15000*0.2) + (20000*0.25) + (20000 * 0.3) + (20000 *0.35) + (20000*0.4) + (rev - 102000)*0.45; } System.out.println("你的税收为:"+sum);
14.(if 语句,操作符)**读入一个三位数,计算其各位数字之和。例如:123
各位数字之和为6System.out.println("输入一个整数:"); int num2 = sc .nextInt(); if(num2>100 && num2 <1000){ int a1 = num2 % 10; int b1 = (num2 /10) % 10; int c1 = num2 /100; int sum1 = a1 + b1 + c1; System.out.println("这个三位数各位数字之和为:"+sum1); }else{ System.out.println("这个数字不是三位数,请重新输入!"); }
15.(if 语句)**读入三个整数,把这三个整数按照由大到小的顺序输出
System.out.println("请输入第一个整数:"); int n1 = sc.nextInt(); System.out.println("请输入第二个整数:"); int n2 = sc.nextInt(); System.out.println("请输入第三个整数:"); int n3 = sc.nextInt(); int max = n1; int mid = 0; int min = 0; if(n2 > max){ if(n3 > max){ //n2、n3都大于max if(n3 > n2){ //比较n2、n3 max = n3; mid = n2; min = n1; }else{ max = n2; mid = n3; min = n1; } }else{ //n2大于max ,max大于n3 max = n2; mid = n1; min = n3; } }else{//n2<max if(n3 > max){ //max < n3 max = n2; mid = n1; min = n3; } else{ //max > n3 比较 n2、n3 if(n2 > n3){ max = max; mid = n2; min = n3; }else{ // n2 < n3 max = max; mid = n3; min = n2; } } } System.out.println("最大值为:"+max+",次大值为:"+mid+",最小值为:"+min);