if-else练习:
1.某月有多少天
1 3 5 7 8 10 12 31
4 6 9 11 30
2
2.
输入三个数字并排序
3.
我家的狗5岁了,5岁的狗相当于人类多大呢?其实,狗的前两年每
一年相当于人类的10.5岁,之后每增加一年就增加4岁。那么5岁的狗
相当于人类多少年龄呢?应该是:10.5 + 10.5 + 4 + 4 + 4 = 33岁。
编写一个程序,获取用户输入的狗的年龄,通过程序显示其相当于人
类的年龄。如果用户输入负数,请显示一个提示信息。
4.
大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出
一定的条件:高:180cm以上;富:财富1千万以上;帅:是。
如果这三个条件同时满足,则:“我一定要嫁给他!!!”
如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
如果三个条件都不满足,则:“不嫁!”
5.某公园门票的票价是50元,一次购票满30张,每张可以少收48元。试编写自动计费系统程序。
输入人数计算总价。
public static void main(String[] args) {
int count=25;//用count表示总人数
if(count<30){
}else if(count>=30){
}else{
}
}
6.
假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入
一个两位数,然后按照下面的规则判定用户是否能赢。
1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。
7.编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。
输入9就是 9am
输入12就是12pm
输入14就是2pm
23 11pm
8.满500打8折, 700打7折, 900打5折
double price=689;
if(){
}else if(){
}else if(){
}else{
}
9.random生成一个四位随机数, 用户输入自己的会员号,
相等则中奖
9.打印成绩等级
10.画出流程图并编程实现:
某人准备去海南旅游,现在要订购机票。
机票的价格受季节旺季、淡季的影响,头等舱和经济舱价格也不同。
假设机票原价为6500元,
4-10月为旺季,
旺季头等舱打九折,经济舱打八折,淡季头等舱打五折,经济舱打四折。
编写程序,使用嵌套if选择结构,
根据出行的月份和选择的舱位输出实际的机票价格,
如图3.18所示。
使用equals方法判断两个字符串是否相等
11.某公司要给员工发年终奖,为了奖励老员工,工作时间越长,发的越多,规则如下:
//工作满0年,发月薪的1倍月薪年终奖,如果月薪大于8000,那么就是发1.2倍
//工作满1年,发月薪的1.5倍月薪年终奖,如果月薪大于10000,那么就是发1.7倍
//工作满2年甚至更多,发月薪的3倍月薪年终奖,如果月薪大于12000,那么就是发3.2倍
public class F4{}
12.加油案例:
一个加油站为了鼓励车主多加油.加的多有优惠
92号汽油.每升6元;如果大于等于20升,那么每升5.9元
97号汽油.每升7元;如果大于等于30升,那么每升6.95元
编写程序,用户输入自己的汽油编号,然后输入自己加多少升,计算并且输出应付价格
int oilNum=92;
int vol=;
if(oilNum=92){
if(){
}else{
}
}else{
if(){
}else{
}
}
13.
有一对兔子,从出生后『第3个月起』,『每个月』都『生一对兔子』,『小兔子』长到『第三个月后』每个月有生一对兔子,假如兔子都不死,问『第二十个月』的兔子对数为多少?
13.阶乘的计算方法:
大于等于1
任何大于等于1 的自然数n 阶乘表示方法:
n!= 1 * 2 * 3 * ··· * (n-1) n
或
n!=n * (n-1)!
0的阶乘
0!=1。
斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。
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.公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
公园里有一只猴子,需要按照以下规则吃桃子, 最终求桃子刚开始有多少个。
规则:猴子每天吃掉当前桃子总数的一半儿,并从剩余的另一半儿中扔掉一个桃子。
已经第七天只剩一个桃子, 求:最开始有多少个桃子
package day0606;
//公园里有一只猴子,需要按照以下规则吃桃子, 最终求桃子刚开始有多少个。
//规则:猴子每天吃掉当前桃子总数的一半儿,并从剩余的另一半儿中扔掉一个桃子。
// 已经第七天只剩一个桃子, 求:最开始有多少个桃子
//第1天吃桃子之前的桃子数量 190 =(第2天吃桃子之前的桃子数量94+1)*2
//第2天吃桃子之前的桃子数量 94 =(第3天吃桃子之前的桃子数量46+1)*2
//第3天吃桃子之前的桃子数量 46 =(第4天吃桃子之前的桃子数量22+1)*2
//第4天吃桃子之前的桃子数量 22 =(第5天吃桃子之前的桃子数量10+1)*2
//第5天吃桃子之前的桃子数量 10 =(第6天吃桃子之前的桃子数量4+1)*2
//第6天吃桃子之前的桃子数量 4 =(第7天吃桃子之前的桃子数量1+1)*2
//天吃桃子之前的桃子数量 1
public class File2 {
public static void main(String[] args) {
//1.用peaches表示本次的桃子的总数(赋值为1表示第7次桃子数量为1)
int peaches=1;
//2.循环变量从6开始一直减小到1结束(表示需要计算第6天,第5天,第4天...第1天 每次的桃子数量)
//i为6表示要计算第6天吃桃子之前,桃子的数量(第七天的桃子数量为peaches变量的初值1,是已经的不需要计算)
for(int i=6;i>=1;i--){
peaches=(peaches+1)*2;
}
//3.打印peaches中存储的桃子总数
System.out.println(peaches);
}
}
10.有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,求棋盘上放的所有芝麻的重量
https://www.cnblogs.com/0328dongbin/p/8798621.html
for循环练习2:
发黄金问题:
按照页码查询数据案例
数组+循环练习题:
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);
}
}
}
}
package day0613;
public class Test3 {
public static void main(String[] args) {
int[] old={1,9,4,2,6,2,6,2,8,2,6};
//用外循环从第1个位置开始获取元素(和此元素前边的每个元素进行比较<如果相等就跳过此元素>)
T: for(int i=1;i<old.length; i++) {
int t = old[i];//old[i]表示当前需要判断的元素(判断它要不要打印,它和前边都不相等就打印)
String eq="no";//eq变量用于标识当前元素和前边每个元素是否相等(如果都不相等它的值就是no)
//内循环从0开始到i-1结束 (j=0; j<i; j++) ,用来拿当前元素和前边每个元素判断是否相等
//如果相等就将eq的值改为yes(则当前元素old[i]不能被打印<可以用continue跳过外循环>)
for(int j=0; j<i; j++){
if(old[i] == old[j]){
eq="yes";
continue T;
}
}
if("no".equals(eq)){
System.out.println(old[i]);
}
}
}
}
package day0613;
public class Test4 {
public static void main(String[] args) {
int[] a={20, 45, 78, 34, 16, 3, 99, 56};
//用for循环统计数组z中大于50的数有多少个
int c=0;
for (int i=0; i<a.length; i++){
if(a[i]>50){
c++;
}
}
System.out.println("c = " + c);
}
}
将一个任意位数的整数的每一位放入到一个数组中:
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);
}
}
}
打印图形:
public class M {
public static void main(String[] args) {
for (int j = 1; j <= 5; j++) {//层数
for (int k = 1; k <= 5-j; k++) {
System.out.print(" ");
}
for (int i = 1; i <= 2*j-1; i++) {//行
if(i == 1 || i == (2*j-1) || j==5) {
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
// *
// * *
// * *
// * *
// *********
package day0606;
import java.util.Scanner;
//假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
//给你一个整数数组flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。
// 另有一个数n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false 。
//
//来源:力扣(https://leetcode.cn/)
public class File6 {
public static void main(String[] args) {
int[] flowers={0,1,0,1,0,0,0,1,0,1,0};
//2.用for循环判断每个位置能否放入1(存元素的前提:两个1不能相邻)
int count=0;
for(int i=0; i<=10; i++){
//如果满足存储元素的前提(两个1没相邻),就给flowers数组的第i位存入一个1
//第一位和最后一位可以放入1的情况为: int[] flowers={0,0,0,1,0,0,0,1,0,0,0};
if( (i==0&&flowers[0]==0&&flowers[1]==0)||
(i==flowers.length-1 && flowers[flowers.length-1]==0 && flowers[flowers.length-2]==0)||
(i!=0&& i!=flowers.length-1&&flowers[i-1]==0&&flowers[i+1]==0&& flowers[i]==0 ) ){
flowers[i]=1;
count++;
}
}
Scanner s=new Scanner(System.in);
int n=s.nextInt();
if(count>=n){
System.out.println("可以种下" +n +"朵花");
}else{
System.out.println("种不下" +n +"朵花");
}
}
}
package day0606;
//目前有一个小球处于100米的高度, 每次下落会反弹为原来高度的一半儿,
//第10次落地时,其运动轨迹的长度为多少米? 第10次反弹后的高度是多少?
public class File8 {
public static void main(String[] args) {
//1.定义一个变量height表示小球的初始高度
double height=100.0;
//2.计算10次下落后小球所处的高度
//方式一: 经过第10次下落后的反弹高度为下列公式的计算结果(这是一种计算方式)
System.out.println(height/Math.pow(2,10));
//方式二: 经过第10次下落后的反弹高度为下列公式的计算结果(这是另一种计算方式)
for(int i=1; i<=10; i++){
height=height/2;
}
System.out.println(height);
/*
distance=distance+height/2*2;
System.out.println("运动总轨迹长度为:"+distance);*/
//3.计算小球10次下落后所有的运动轨迹的长度
height=100/2;
//distance变量用来存储总共的运动轨迹长度(初值为150表示第一次下落后的轨迹长度为150)
double distance=0;
//第二次到第十次的运动轨迹的计算(用以前的运动轨迹长度和本次的 高度*2相累加)
for(int i=2 ; i<=10; i++){
distance=height*2+distance;
height=height/2;
}
//之前所有的运动轨迹长度加上第一次下落时的运动轨迹长度(100)
distance=distance+100;
System.out.println(distance);
}
}
数组{1,9,4,2,6,2,6,2,8,2,6}元素去重:
package day0613;
public class Test3 {
public static void main(String[] args) {
int[] old={1,9,4,2,6,2,6,2,8,2,6};
//用外循环从第1个位置开始获取元素(和此元素前边的每个元素进行比较<如果相等就跳过此元素>)
T: for(int i=1;i<old.length; i++) {
int t = old[i];//old[i]表示当前需要判断的元素(判断它要不要打印,它和前边都不相等就打印)
String eq="no";//eq变量用于标识当前元素和前边每个元素是否相等(如果都不相等它的值就是no)
//内循环从0开始到i-1结束 (j=0; j<i; j++) ,用来拿当前元素和前边每个元素判断是否相等
//如果相等就将eq的值改为yes(则当前元素old[i]不能被打印<可以用continue跳过外循环>)
for(int j=0; j<i; j++){
if(old[i] == old[j]){
eq="yes";
continue T;
}
}
if("no".equals(eq)){
System.out.println(old[i]);
}
}
}
}
package day0613;
public class Test4 {
public static void main(String[] args) {
int[] a={20, 45, 78, 34, 16, 3, 99, 56};
//用for循环统计数组z中大于50的数有多少个
int c=0;
for (int i=0; i<a.length; i++){
if(a[i]>50){
c++;
}
}
System.out.println("c = " + c);
}
}
杨辉三角ublic class yanghui_hui_trigle {
public static void main(String[] args) {
/*for (int i = 1; i <=7; i++) {
for (int j = 1; j <=i; j++) {
System.out.print(jie(i-1)/(jie(j-1)*jie(i-j))+"\t");
}
System.out.println();
}*/
// for(int f=0;f<=3;f++){
// for (int d = 0; d<3-f; d++) {
// System.out.print(" ");
// }
// for (int d = 0; d <f; d++) {
// System.out.print("*"+" ");
// }
// System.out.println();
//
// }
for (int i = 1; i <=7; i++) {
for (int d=1; d<8-i; d+=1) {
System.out.print(" ");
System.out.print(" ");
}
for (int j = 1; j <=i; j++) {
System.out.print(jie(i-1)/(jie(j-1)*jie(i-j))+" ");
}
System.out.println();
}
}
public static int jie(int m){
int a=1;
for (int i = 1; i <=m; i++) {
a*=i;
}
return a;
}
}