9.已知小红同学有25元,她攒了几天钱之后发现自己的现在的钱比原来的2倍还多出10块。而小蓝同学有30元,他攒了几天钱之后发现自己的钱正好是原来的2倍。于是小胖说:小红和小蓝现在的钱一样多,请问,他说的对吗? (这个题用不到if-esle分支, 只会用到+-*/ %等符号)
10.练习1: 判断-个四位数abcd是否等于(ab + cd) * (ab +cd)
举例说明2025=(20+ 25)*(20+ 25)
11.练习2:某小伙想定一份外卖, 商家的优惠方式如下:鱼香肉丝单点24元,油炸花生米单点8元,米饭单点3元。订单满30元8折优惠。鱼香肉丝优惠价16元,但是优惠价和折扣不能同时使用。那么这个小伙要点这三样东西,最少要花多少钱?
12.练习3:接收用户输入的3个整数,并将它们的最大值作为结果输出
1.练习题: 鸡兔同笼问题(穷举法)
已知:鸡兔共35只,共94只脚,那么鸡和兔各几只?
2.练习题:求数字阶乘(for循环版)
需求:接收用户输入的数字,计算该数字的阶乘结果
已知:负数不可以有阶乘,0的阶乘结果是1,
5 ! = 5 x 4 x 3 x 2 x 1
3.练习题:打印100以内除了尾数为3,5,7的所有数
4.练习题:求质数:接收用户输入的数字,判断是否为质数
质数的概念:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数,也称为素数
规定:1既不是质数,也不是合数
5.练习题:生成一个数组,每个空间里存储随机数,将这个数组的元素,
用冒泡排序降序排列,然后打乱顺序后输出。
6.练习题:打印1--1000以内所有的数字(用continue跳过完数)
完数:如果一个数等于其所有因子之和,我们就称这个数为"完数",比如6的因子为1,2,3 6 = 1 + 2 + 3,那么6就是一个完数
7.已知:斐波那契数列的前几个数分别为0,1,1,2,3,5…从第三项开始,每一项都等于前两项的和.请接收用户输入的整数n,求出此数列的前n项.
8.假设一个简单的ATM机的取款过程是这样的:
首先提示用户输入密码(password),最多只能输入三次,
超过3次则提示用户“密码错误,请取卡”结束交易。
如果用户密码正确,再提示用户输入取款金额(amount),
ATM机只能输出100元的纸币,一次取钱数要求最低100元,最高1000元。
若用户输入的金额符合上述要求,则打印输出用户取得钱数,
最后提示用户“交易完成,请取卡”,否则提示用户重新输入金额。
假设用户密码是111111,请编程实现。
9.公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
10.有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,求棋盘上放的所有芝麻的重量
https://www.cnblogs.com/0328dongbin/p/8798621.html
发黄金问题:
按照页码查询数据案例
数组+循环练习题:
1.定义一个String数组长度用Scanner的nextInt方法输入, 然后用Scanner的next()方法给此数组输入类似"a" "b" 元素只包含一个小写字母的数据(还可以输入?)。
只能输入小写字母和问号,如果不符合输入要求就提示"输入数据不符合要求,请重新输入",并用用Scanner的next()方法让用户重新输入。
2.输入完成后将数组中的所有?替换成小写字母,要求不能和原有数组中的元素重复
提示:字符串比较是否相等用String文件(类)类的equals方法,举例
String s1="hello"; String s2="hello2"; System.out.println(s1.equals(s2));
import java.util.Arrays;
import java.util.Scanner;
public class StringArr {
public static void main(String[] args) {
//定义一个数组长度用nextInt方法输入
Scanner sc = new Scanner(System.in);
System.out.println("请输入数组长度:");
int length = sc.nextInt();
String[] arr = new String[length];
//用next()给数组赋值
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第" + (i + 1) + "个数据");
String input = sc.next();
//只能输入小写字母和问号
while (!input.matches("[a-z?]")) {
System.out.println("输入数据不符合要求,请重新输入");
input = sc.next();
}
arr[i] = input;
}
System.out.println(Arrays.toString(arr));
//定义一个方法,找出从a~z中第一个和原有数组中都不相同的字母
String target = findDifferentWord(arr);
//将数组中的所有?替换成小写字母
for (int i = 0; i < arr.length; i++) {
if (arr[i].matches("[?]")) {
arr[i] = target;
}
}
System.out.println(Arrays.toString(arr));
}
//找出从a~z中第一个和原有数组中都不相同的字母
public static String findDifferentWord(String[] arr) {
//定义一个字符串,从a-z
String words = "abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < words.length(); i++) {
String target = String.valueOf(words.charAt(i));
for (int j = 0; j < arr.length; j++) {
if (target.equals(arr[j])) {
break;
}
if (j == arr.length - 1) {
return target;
}
}
}
//如果字符串数组的元素已经包含了从a~z的所有小写字母,则返回"!"
return "!";
}
}
10. 验证角谷猜想:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,
得到一个新的自然数后按照上面的法则继续计算,若干次后得到的结果必然为1。
要求:读入一个自然数,输出计算的步骤。
package chap4;
import java.util.Scanner;
/*
* 给一个自然数,偶数除以2,奇数则乘以3加1,得到一个新的自然数继续上面步骤计算
* */
public class Work10 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数");
int sum= scanner.nextInt();
while(sum!=1){
if (sum % 2 == 0) {
System.out.print(sum);
sum/=2;
System.out.println("/"+2+"="+sum);
}else if (sum%2 !=0){
System.out.print(sum);
sum=sum*3+1;
System.out.println("*"+3+"+"+1+"="+sum);
}
}
}
}
将一个任意位数的整数的每一位放入到一个数组中:
int n=9586321;
int[] a = new int[1];
for(int i=0;;i++){
a[i] = n%10; //除以10取余数就是求个位
n=n/10; //将当前数字变小
if(n<=0){
break;
}else{
a=Arrays.copyOf(a,a.length+1);
}
}
System.out.println(Arrays.toString(a));
三天打鱼两天晒网案例:
* 2000 1 1 表示开始打鱼 三天打鱼两天晒网
* 求输入一个年份 表示年月日是打鱼还是晒网
package qq;
import javax.swing.JOptionPane;
import java.util.Scanner;
/*
* 2000 1 1 表示开始打鱼 三天打鱼两天晒网
* 求输入一个年份 表示年月日
* 是打鱼还是晒网
* */
public class ThreeDaysFishing {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份");
int year = scanner.nextInt();
System.out.println("请输入月份");
int month = scanner.nextInt();
System.out.println("请输入日");
int day = scanner.nextInt();
//定义总天数并计算
int totalDays;
totalDays = calculateTotalDays(year, month, day);
//判断这天是在打鱼还是晒网
String fishingOrNet = isFishing(totalDays);
//打印结果
System.out.println(year + "年" + month + "月" + day + "日" + fishingOrNet);
}
//计算总天数
private static int calculateTotalDays(int year, int month, int day) {
int totalDays = 0;
//计算年代表的天数
for (int i = 2000; i < year; i++) {
//如果是闰年,加366
if ((i % 4 == 0 && i % 100 != 0 || i % 400 == 0)) {
totalDays += 366;
} else {//平年加365
totalDays += 365;
}
}
//计算月代表的天数
for (int i = 1; i < month; i++) {
switch (i) {
case 4:
case 6:
case 9:
case 11:
totalDays += 30;
break;
//2月单独判断
case 2:
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
totalDays += 29;
} else {
totalDays += 28;
}
break;
default:
totalDays += 31;
}
}
//计算日代表的天数
totalDays += day;
return totalDays;
}
//根据总天数判断这一天在打鱼还是晒网
private static String isFishing(int totalDays) {System.out.println(totalDays);
if (totalDays % 5 == 0 || totalDays % 5 == 4) {System.out.println(totalDays % 5 == 0);
return "这天在晒网";
}
return "这天在打鱼";
}
}
水仙花数:
import java.util.Scanner;//2.
public class Flower {
public static void main(String[] args) {
//判断一个数是否是水仙花数
int x=534;
int h=x/100;
int t=x%100/10;
int o=x%10;
System.out.println(h);
System.out.println(t);
System.out.println(o);
//判断100-999之间所有的水仙花数
for(int i=100;i<=999;i++){
int hundreds=i/100;
int ten=i%100/10;
int one=i%10;
System.out.println(i+": "+hundreds+"-"+ten+"-"+one);
}
}
}