java基础练习题
1变量、运算符和类型转换:1.1手动输入一个学生的成绩,对这个成绩进行一次加分,加当前成绩的20%,输出加分后成绩
Scanner scan =
new Scanner(System.in);
System.out.println("请输入一个数字"
);
int num =
scan.nextInt();
num += num * 0.2
;
System.out.println(num);
View Code
1.2商场举行店庆,抽几折打几折, 先手动输入消费金额,再输入,抽到的折扣,计算出折后价格
Scanner scan =
new Scanner(System.in);
System.out.println("请输入消费金额"
);
int num =
scan.nextInt();
System.out.println("请输入抽到的折扣"
);
int dis =
scan.nextInt();
int price = 0;
// 累加变量
price = num * dis / 10
;
System.out.println("折后价格:" + price);
View Code
1.3手动输入一个4位数,求各位数字之和
Scanner scan =
new Scanner(System.in);
System.out.println("请输入一个4位数"
);
int shu =
scan.nextInt();
int a = shu / 1 % 10
;
int b = shu / 10 % 10
;
int c = shu / 100 % 10
;
int d = shu / 1000 % 10
;
System.out.println(a + b + c + d);
View Code
2分支结构:2.1商场消费返利活动,手动输入顾客消费金额, 如果金额打8折后仍然满1000元,用户就获得200元代金券一张(不考虑多张)
Scanner scan =
new Scanner(System.in);
System.out.println("请输入消费金额"
);
int num =
scan.nextInt();
double dis = num * 0.8;
// 打折后的价格
if (dis > 1000
) {
dis = dis - 200;
// 200元代金券
}
System.out.println(dis);
View Code
2.2用户输入一个年份,如果是闰年输出是闰年 (年份能被4整除,且不能被100整除,或者能被400整除的年份)
Scanner input =
new Scanner(System.in);
System.out.println("输入年份"
);
int year =
input.nextInt();
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0
) {
System.out.println("是闰年"
);
} else {
System.out.println("不是闰年"
);
}
View Code
2.3手动输入一个整型会员号,如果用户输入的是4位数字,输出登录成功,如果用户输入的不是4位数字,输出“您输入的会员号有误”
Scanner input =
new Scanner(System.in);
System.out.println("请输入整型会员号"
);
int num =
input.nextInt();
int i = 0;
// 初始化 数字的位数
while (num != 0
) {
num = num / 10;
// 被10整除 i++;
}
// 最后,这个 i 就是数字的位数
if (i != 4
) {
System.out.println("您输入的会员号有误"
);
} else {
System.out.println("登录成功!"
);
}
View Code
2.4手动输入a,b,c三个变量的数值,要求通过数值交换,把输入的数值从小到大排序放入a,b,c中,并输出
Scanner scanner =
new Scanner(System.in);
System.out.print("请输入第一个整数:"
);
int a =
scanner.nextInt();
System.out.print("请输入第二个整数:"
);
int b =
scanner.nextInt();
System.out.print("请输入第三个整数:"
);
int c =
scanner.nextInt();
int x = 0
;
if (a >
b) {
x =
a;
a =
b;
b =
x;
}
if (a >
c) {
x =
a;
a =
c;
c =
x;
}
if (b >
c) {
x =
b;
b =
c;
c =
x;
}
System.out.println(a + "," + b + "," + c);
View Code
3多分支结构3.1商场根据会员积分打折, 2000分以内打9折, 4000分以内打8折 8000分以内打7.5折, 8000分以上打7折, 使用if-else-if结构,实现手动输入购物金额和积分,计算出应缴金额
Scanner sc =
new Scanner(System.in);
System.out.println("请输入购物金额"
);
double shop =
sc.nextDouble();
System.out.println("请输入积分"
);
int fen =
sc.nextInt();
if (fen < 2000
) {
shop *= 0.9
;
System.out.println("目前消费" + shop + "元"
);
} else if (fen >= 2000 && fen <= 4000
) {
shop *= 0.8
;
System.out.println("目前消费" + shop + "元"
);
} else if (fen <= 8000 && fen > 4000
) {
shop *= 0.75
;
System.out.println("目前消费" + shop + "元"
);
} else if (fen > 8000
) {
shop *= 0.7
;
System.out.println("目前消费" + shop + "元"
);
} else {
System.out.println("抱歉没有折扣"
);
}
View Code
3.2机票价格按照淡季旺季、头等舱和经济舱收费、 输入机票原价、月份和头等舱或经济舱, 其中旺季(5-10月)头等舱9折,经济舱85折, 淡季(11月到来年4月)头等舱7折,经济舱65折, 最终输出机票价格
Scanner s =
new Scanner(System.in);
System.out.println("请输入机票原价"
);
int piao =
s.nextInt();
System.out.println("请输入月份"
);
int yue =
s.nextInt();
System.out.println("请选择:1.头等" + "2.经济"
);
int l =
s.nextInt();
if (yue >= 5 && yue <= 10) {
// 旺季
if (l == 1
) {
piao *= 0.9
;
} else {
piao *= 0.85
;
}
} else {
// 淡季
if (l == 1
) {
piao *= 0.7
;
} else {
piao *= 0.65
;
}
}
System.out.println(piao);
View Code
3.3选择一个形状(1长方形、2正方形、3三角形、4圆形) 根据不同的选择让用户输入不同的信息, 长方形有长和宽、 正方形有边长、 三角形有底和高、 圆形有半径, 计算输出指定形状的面积
Scanner scan=
new Scanner(System.in);
System.out.println("1长方形、2正方形、3三角形、4圆形"
);
int num=
scan.nextInt();
switch(num) {
case 1
:
System.out.println("请输入长方形的长"
);
int l=
scan.nextInt();
System.out.println("请输入长方形的宽"
);
int w=
scan.nextInt();
int fs=l*
w;
System.out.println("长方形面积为:"+
fs);
break;
case 2
:
System.out.println("请输入正方形边长"
);
int z=
scan.nextInt();
System.out.println("正方形面积为:"+z*
z);
break;
case 3
:
System.out.println("请输入三角形的底长"
);
int d=
scan.nextInt();
System.out.println("请输入三角形的高"
);
int g=
scan.nextInt();
System.out.println("三角形面积为:"+d*g/2
);
break;
case 4
:
System.out.println("请输入圆形的半径"
);
double r=
scan.nextDouble();
double ys=3.14*r*
r;
System.out.println("圆形面积为:"+
ys);
break;
}
View Code
3.4输入年份和月份,输出这个月应该有多少天(使用switch结构)
Scanner scan =
new Scanner(System.in);
System.out.println("请输入年份"
);
int year =
scan.nextInt();
System.out.println("请输入月份"
);
int month =
scan.nextInt();
switch (month) {
case 1
:
case 3
:
case 5
:
case 7
:
case 8
:
case 10
:
case 12
:
System.out.println("31天"
);
break;
case 4
:
case 6
:
case 9
:
case 11
:
System.out.println("30天"
);
break;
case 2
:
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0
) {
System.out.println("29天"
);
} else {
System.out.println("28天"
);
}
}
4循环结构(上)4.1随机生成一个1-100之间的数字num,循环让用户输入猜这个数, 如果用户输入的数字大于num提示输入的数字比较大, 如果用户输入的数字小于num提示输入的数字比较小, 直到用户输入的数字和num相等为止,然后输出用户猜数的总次数
Scanner scan=
new Scanner(System.in);
Random ran=
new Random();
//生成游戏答案1~100
int num=ran.nextInt(100)+1
;
//System.out.println(num);
int n=0;
//定义n的初值
int i=0;
//定义猜数次数
while(n!=
num) {
System.out.println("请猜数字"
);
n=
scan.nextInt();
if(n>num) {
//判断猜数结果
System.out.println("输入的数字较大"
);
}else if(n<
num) {
System.out.println("输入的数字较小"
);
}else {
System.out.println("恭喜您猜对了"
);
}
i++;
//猜数次数加1
}
System.out.println("总共猜了"+i+"次");
4.2打印出1-100之间所有不是7的倍数和不包含7的数字,并求和
int sum = 0
;
for (
int i = 1; i <= 100; i++
) {
if(i%7 ==0 || i == 7 || i/10 == 7){
//注意:70-79容易漏掉
continue;
}
sum +=
i;
}
System.out.println(sum);
4.3循环输入5个数,输完后显示这些数中有没有负数
Scanner scan=
new Scanner(System.in);
System.out.println("请输入5个数字"
);
int flag=0;
//立旗
int i=1
;
while(i<=5
) {
int num=
scan.nextInt();
if(num<0
) {
flag=1
;
}
i++
;
}
if(flag==0
) {
System.out.println("没有负数"
);
}else {
System.out.println("有负数"
);
}
5循环结构(下)5.1有一个有钱的神经病,他往银行里存钱, 第一天存1元,以后每天比前一天多存50%,完成下列计算任务 1)他存到第几天,当天存的钱会超过10元
double money=1
;
int day=1
;
while(money<10
) {
money*=1.5
;
day++
;
System.out.println("day:"+day+",money:"+
money);
}
System.out.println(day);
2)一个月(30天)后,他总共存了多少钱
double sum=0
;
double mo=1
;
for(
int i=1;i<=30;i++
) {
sum+=
mo;
System.out.println("i:"+i+",money:"+mo+",sum:"+
sum);
mo*=1.5
;
}
System.out.println(sum);
5.2有一个400米一圈的操场,一个人要跑10000米, 第一圈50秒,其后每一圈都比前一圈慢1秒, 按照这个规则计算跑完10000米需要多少秒
int round=10000/400
;
int sum=0
;
int time=50
;
for(
int i=1;i<=round;i++
) {
sum+=
time;
System.out.println("圈数:"+i+",时间:"+time+",花的时间:"+
sum);
time++
;
}
System.out.println(sum);
5.3用户输入任意一个整数,求各位数字之和
Scanner scan=
new Scanner(System.in);
System.out.println("请输入一个数字"
);
int num=
scan.nextInt();
int sum=0;
//累加变量
while(num>0
) {
//将数字的个位取出累加
sum+=num
;
//将当前数字除以10,以便下次循环使用
num=num/10;
//num/=10;
}
System.out.println(sum);
5.4井里有一只蜗牛,他白天往上爬5米,晚上掉3.5米,井深56.7米 计算蜗牛需要多少天才能从井底到爬出来
int day=1;
//天数
double sum=0;
//爬过的距离
while(
true) {
//白天向上爬5米
sum+=5
;
System.out.println("day:"+day+",sum:"+
sum);
if(sum>=56.7) {
//如果爬出了井
//退出循环
break;
}
//晚上掉3.5;
sum-=3.5
;
day++
;
}
System.out.println(day);
6循环嵌套6.1求1~1000以内质数列表PS:质数是只能被1和自身整除的整数
int i, j;
for (i = 1; i <= 1000; i++
) {
for (j = 2; j < i; j++
) {
if (i % j == 0
)
break;
}
if (i ==
j){
System.out.print(j + " "
);
}
}
7数组7.1定义一个数组int[] nums={8,7,3,9,5,4,1} 输出数组中的最大值和最大值所在的下标
int[] nums={8,7,3,9,5,4,1
};
int max = nums[0];
//默认第一个最大
int index = 0
;
for (
int i = 0; i < nums.length; i++
) {
if (nums[i] >
max) {
max =
nums[i];
index =
i;
}
}
System.out.println("最大的数: "+max+" 下标: "+index);
7.2向一个长度为10的整型数组中随机生成10个0~9的随机整数,完成下列任务 1)升序输出、降序输出 2)输出总和、平均数
Random ran =
new Random();
int[] num =
new int[10
];
for (
int i = 0; i < num.length; i++
) {
num[i] = ran.nextInt(10
);
}
Arrays.sort(num);
for (
int i = 0; i < num.length; i++
) {
System.out.print(num[i] + " "
);
}
System.out.println("------升序------"
);
for (
int i = num.length - 1; i >= 0; i--
) {
System.out.print(num[i] + " "
);
}
System.out.println("------降序------"
);
// 总和
int sum = 0
;
for (
int i = 0; i < num.length; i++
) {
sum = num[i] +
sum;
}
System.out.println("总和:" +
sum);
// 平均数
int sum2 = 0
;
for (
int i = 0; i < num.length; i++
) {
sum2 = num[i] +
sum2;
}
System.out.println("平均数:" + sum2 / num.length);
7.3向一个长度为5的整型数组中随机生成5个1-10的随机整数 要求生成的数字中没有重复数
int[] nums =
new int[5
];
Random ran =
new Random();
for (
int i = 0; i < nums.length; i++
) {
nums[i] = ran.nextInt(10) + 1
;
for (
int j = 0; j < i; j++
) {
while (nums[i] == nums[j]) {
//如果重复,退回去重新生成随机数
i--
;
}
}
}
for (
int i = 0; i < nums.length; i++
) {
System.out.print(nums[i] + " "
);
}
7.4(选做)向一个长度为10的整型数组中随机生成10个0~9的随机整数,完成下列任务 1)统计每个数字出现了多少次 2)输出出现次数最多的数字 3)输出只出现一次的数字中最小的数字
Random r =
new Random();
// 1. 声明源数组,包含10个0-9之间的随机数
int[] src =
new int[10
];
// 2. 声明一个标记数组,存放的是0-9,10个数字
int[] flag = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
};
// 3. 声明一个用来统计标记数组中数字在源
// 数组中的个数
int[] count =
new int[flag.length];
// 4. 给源数组赋值0-9之间的随机数
for (
int i = 0; i < src.length; i++
) {
src[i] = r.nextInt(10
);
}
// 5. 统计标记数组中的每个元素在源数组中
// 有多少个即给count数组赋值
for (
int i = 0; i < flag.length; i++
) {
for (
int j = 0; j < src.length; j++
) {
// 如果标记数组中的数字在源数组中有,则count+1
if (flag[i] ==
src[j]) {
count[i]++
;
}
}
}
// 6. 输出src和count的数据
System.out.println("随机产生的数据如下:"
);
System.out.println(Arrays.toString(src));
// System.out.println(Arrays.toString(count));
// a.统计每个数字出现的次数
// 如果count中的元素的值大于0,则输出其下标和值
for (
int i = 0; i < count.length; i++
) {
if (count[i] > 0
) {
System.out.println("数字" + i + "出现" + count[i] + "次"
);
}
}
// b.输出出现最多次数的数字
// 假设第一个统计的数字就是最多那个
int max = count[0
];
int index = 0
;
for (
int i = 0; i < count.length; i++
) {
if (count[i] >
max) {
max =
count[i];
index =
i;
}
}
System.out.println("出现次数最多的数字是" +
index);
// c. 输出只出现一次的数字中最小的数字
for (
int i = 0; i < count.length; i++
) {
if (count[i] == 1
) {
System.out.println("出现1次的数字中最小的是" +
i);
break;
}
}
转载于:https://www.cnblogs.com/chaoyang123/p/11551897.html
相关资源:java练习题大全