3.1分支结构与循环语句作业解析
作业1:实现个人所得税的计算器。
应纳税所得额 = 税前工资收入金额 - 起征点(3500元)
应纳税额 = 应纳税所得额 x 税率 - 速算扣除数
import java.util.Scanner;
public class Homework1{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入您的税前工资:");
double salary = input.nextDouble();
double taxSalary = salary-3500;//应缴税的工资部分:税前工资-起征税额。
double tax=0;//应缴纳的税额
if(taxSalary>0&&taxSalary<=1500){
tax =taxSalary*0.03;
}else if(taxSalary>1500&&taxSalary<=4500){
tax =taxSalary*0.1-105;
}else if(taxSalary>4500&&taxSalary<=9000){
tax =taxSalary*0.2-555;
}else if(taxSalary>9000&&taxSalary<=35000){
tax =taxSalary*0.25-1005;
}else if(taxSalary>35000&&taxSalary<=55000){
tax =taxSalary*0.3-2755;
}else if(taxSalary>55000&&taxSalary<=80000){
tax =taxSalary*0.35-5505;
}else if(taxSalary>80000){
tax =taxSalary*0.45-13505;
}
System.out.println("税前工资为:"+salary);
System.out.println("应缴个税:"+tax);
System.out.println("税后工资:"+(salary-tax));
}
}
作业2:输入一个数,判断是奇数还是偶数
import java.util.Scanner;
public class homework2{
public static void main(String[] args){
Scanner aaa = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num =aaa.nextInt();
if(num%2==0){
System.out.println(num+"为偶数!");
}else{
System.out.println(num+"为奇数!");
}
}
}
作业3:判断一个数是否是素数。
素数:只能被1和自身整除的数。 1不是素数
分析:1.获取用户输入的数字n
2.利用n除以[2,n-1],如果存在整除的数,n不是素数
①
public class homework3{
public static void main(String[] args) {
// 输入一个数
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数:");
int n = input.nextInt();
boolean flag = true;// 判断是否是素数
if (n == 1)
flag = false;
else {
for (int i = 2; i < n; i++) {
if (n % i== 0) {
flag = false;
break;
}
}
}
// 输出结果
if (flag) {
System.out.println(n + "是素数");
} else {
System.out.println(n + "不是素数");
}
}
}
②
import java.util.Scanner;
public class homework3{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数:");
int n = input.nextInt();
if(n==1){
System.out.println(n+"不是素数");
return;
}
for(int i=2;i<=n-1;i++){
if(n%i==0){
System.out.println(n+"不是素数");
return;
}
}
System.out.println(n+"是素数");
}
}
作业4:从键盘输入一个班5个学生的分数,求和并输出。
public class homework4{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//输入总分并求和
double sum = 0;
for (int i = 0; i < 5; i++) {
System.out.println("请输入第"+(i+1)+"个学生的成绩");
double d = input.nextDouble();
sum += d;
}
//输出总分
System.out.println("总分是"+sum);
}
}
作业5:从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。
分析:
将十进制转换二进制的算法:除以2取余数,直到商为0时,将余数倒序排列。
比如: 13 除以2 商:6 余数:1
6 除以2 商:3 余数:0
3 除以2 商:1 余数:1
1 除以2 商:0 余数:1
===>1101
循环条件:商为0
循环体:用商除以2,求余
public class homework5{
public static void main(String [] args){
//给出一个十进制数
int num2 =6;
//转换
int num = num2;
String str="";
do{
int div = num/2;//除以2得到商
int mod = num%2;//得到余数作为二进制位
str = mod + str;
num = div;//商作为被除数
}while(num!=0);//被除数不是零
System.out.println(num2+"------>"+str); //输出二进制数
}
}
作业6:请根据英文单词的第一个字母判断星期几,如果第一个字母是一样的,则继续判断第二个字母。例如如果第一个字母是S,则继续判断第二个字母,如果第二个字母是a,则输出“星期六”。
public class homework6{
public static void main(String[] args) {
char i, j;
System.out.println("please enter the first letter:");
Scanner input = new Scanner(System.in);
String str = "";
str = input.next().toLowerCase();
// 转换成字符串
i = str.charAt(0);
switch (i) {
case 'm':
System.out.println("Monday\n"); break;
case 'w':
System.out.println("Wednesday\n");break;
case 'f':
System.out.println("Friday\n"); break;
case 't':
System.out.println("please enter the next letter:");
str = input.next().toLowerCase();
j = str.charAt(0);
if (j == 'u')
System.out.println("Tuesday\n");
else if (j == 'h')
System.out.println("Thursday\n");
else
System.out.println("error\n");
break;
case 's':
System.out.println("please enter the next letter:");
// 转换成字符串
str = input.next().toLowerCase();
j = str.charAt(0);
if (j == 'a')
System.out.println("Saturday\n");
else if (j == 'u')
System.out.println("Sunday\n");
else
System.out.println("error\n");
break;
default:
System.out.println("error\n");
break;
}
}
}
作业7:给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐。
分析:
20元钱 3元/瓶
第一次购买: 6瓶 余2元
8元 3元/瓶
第二次购买: 2瓶 余2元
4元 3元/瓶
第三次购买: 1瓶 余1元
2元 3元/瓶 :剩余的总钱数小于可乐的价格,无法购买
public class Homework7{
public static void main(String[] args){
int money=20,price=3;
int temp;//每次购买的瓶数
int change;//购买可乐之后的找零
int sum=0;//能购买的总瓶数
while(money>=price){
temp = money/price;//计算能购买的瓶数
change = money%price;//找零
sum+=temp;//计算总瓶数
money = change+temp;
}
System.out.println("共能购买"+sum+"瓶可乐!");
}
}
作业8:编程求:1!+2!+……+10!
4!=4*3*2*1
分析:1.获取1到10之间每一个数字的阶乘
2.累加
执行过程:
i=1;
f=1*1;//1的阶乘
sum=0+1;//sum保存1!
i=2
f=2*1;//2*1!==>2的阶乘
sum=1+2;//sum保存1!和2!之和
i=3
f=3*2*1;3*2!==>3的阶乘
sum=1+2+6;//sum保存1!,2!和3!之和
....
public class homework8{
public static void main(String[] args){
int sum=0;//计算阶乘之和
int f=1;
for(int i=1;i<=10;i++){
f = f*i;
sum+=f;
}
System.out.println(sum);
}
}
作业9:用while和for循环输出1-1000之间能被5整除的数,且每行输出3个。
public class homework9{
public static void main(String[] args){
/*
方法1:使用while循环实现
int i=1;
int count=0;
while(i<=1000){
if(i%5==0){
System.out.print(i+"\t");
count++;
if(count%3==0){
System.out.println();//换行
}
}
i++;
}
*/
//方法2:用for循环
int count=0;
for(int i=1;i<=1000;i++){
if(i%5==0){
System.out.print(i+"\t");
count++;
if(count%3==0){
System.out.println();//换行
}
}
}
}
}