Java100天编程指南---第11天:综合案例

 


目录

一、前言

二、编程训练

 三、减肥计划

1.问题分析

2.if编码实现

3.switch编码实现

4.输出结果

 四、逢七过

1.问题分析

2.编码实现

3.输出结果

 五、百鸡百钱

1.问题分析

2.编码实现

3.输出结果

  六、不死神兔

1.问题分析

2.编码实现

3.输出结果

七、找素数

1.问题分析

2.编码实现

3.输出结果

 八、数组元素复制

1.问题分析

2.编码实现

3.输出结果

九、评委打分

1.问题分析

2.编码实现

3.输出结果

十、数字加密

1.问题分析

2.编码实现

3.输出结果

附录:


一、前言

  • 学习概述:之前的10天我们主要学习了运算符:基本运算符、关系运算符、逻辑运算符…、程序流程控制、死循环、循环嵌套、跳转关键字、方法、变量、数组,今天我们来做几个简单的案例题目,巩固一下知识点
  • 学习目标:了解编程思想、能够独立编写下面的代码

二、编程训练

  • 定义:使用所学的Java技术解决问题的思维方式和编写代码实现出来的能力
  • 步骤:

  • 编程思维和编程能力不是一朝一夕形成的,需要时间的沉淀和大量练习。

  •  前期:做一些典型的简单例题,后期:可以到牛客、力扣刷一些算法题

 三、减肥计划

  • 需求:输入星期数,显示今天的减肥计划
  • 周一:跑步
  • 周二:游泳
  • 周三:慢走
  • 周四:单车
  • 周五:拳击
  • 周六:爬山
  • 周七:睡觉

1.问题分析

  • 这一题我们可以使用之前学习过的if 语句、switch语句实现

2.if编码实现

import java.util.*;
public class Weight {

	public static void main(String[] args) 
	{
		int week;
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个星期数");
		week=sc.nextInt();
		if(week<1||week>7)
		{
			System.out.println("输入的星期数有误");
		}else if(week==1)
		{
			System.out.println("跑步");
		}else if(week==2)
		{
			System.out.println("游泳");
		}else if(week==3)
		{
			System.out.println("慢走");
		}else if(week==4)
		{
			System.out.println("单车");
		}else if(week==5)
		{
			System.out.println("拳击");
		}else if(week==6)
		{
			System.out.println("爬山");
		}else 
		{
			System.out.println("睡觉");
		}
	}
}

3.switch编码实现

import java.util.*;
public class Weight {

	public static void main(String[] args) 
	{
		int week;
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个星期数");
		week=sc.nextInt();
		switch (week) {
		case 1:
			System.out.println("跑步");
			break;
		case 2:
			System.out.println("游泳");
			break;	
		case 3:
			System.out.println("慢走");
			break;
		case 4:
			System.out.println("单车");
			break;
		case 5:
			System.out.println("拳击");
			break;
		case 6:
			System.out.println("爬山");
			break;
		case 7:
			System.out.println("睡觉");
			break;
		default:
			System.out.println("输入的星期有误");
			break;
		}
	}
}

4.输出结果

请输入一个星期数
5
拳击
10
输入的星期有误

 四、逢七过

  • 从任意一个数字开始报数,要报的数字包含7或是7的倍数,就跳过,我们要输出跳过了哪些数字
  • 数据范围1-100

1.问题分析

  • 这一题直接遍历1-100的元素,输出满足条件的结果

2.编码实现

public class Pass {

	public static void main(String[] args) 
	{
		for(int x=1;x<=100;x++)
		{
			if(x%7==0||x%10==7||x/100==7)
			{
				System.out.println(x);
			}
		}
	}
}

3.输出结果

7
14
17
21
27
28
35
37
42
47
49
56
57
63
67
70
77
84
87
91
97
98

 五、百鸡百钱

  • 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

1.问题分析

  • 鸡翁:范围0-20,x
  • 鸡母:范围0-33,y
  • 鸡雏:z=100-5*x-3*y
  • 因为鸡雏三值钱一,所以当z%3==0&&5*x+3*y+z/3==100,满足条件

2.编码实现

import java.util.*;
public class Chicken {

	public static void main(String[] args) 
	{
		for(int x=0;x<=20;x++)
		{
			for(int y=0;y<=33;y++)
			{
				int z=100-x-y;
				if(z%3==0&&5*x+3*y+z/3==100)
					System.out.println(" 鸡翁 "+x+" 鸡母 "+y+" 鸡雏 "+z);	
			}
		}
	}
}

3.输出结果

 鸡翁 0 鸡母 25 鸡雏 75
 鸡翁 4 鸡母 18 鸡雏 78
 鸡翁 8 鸡母 11 鸡雏 81
 鸡翁 12 鸡母 4 鸡雏 84

  六、不死神兔

  • 有一对兔子,从出生第三个月起每个月都生一对兔子,小兔子长到第三个月后,每个月又生一只兔子,假如兔子都不死,问第n个月的兔子对数为多少
  • n属于1-40

1.问题分析

  • 1 1 2 3 5 8......
  • 这其实就是斐波那契数列,从第三项开始,每一项的数值为前两项之和
  • 我们定义一个带参、有返回值的函数实现

2.编码实现

import java.util.*;
public class Rabbit {

	public static int  Fibo(int n)//定义一个带参、有返回值的函数
	{
		if(n==1||n==2) return 1;
		else return Fibo(n-1)+Fibo(n-2);
		
	}
	public static void main(String[] args) 
	{
		int n;
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入第几个月份");
		n=sc.nextInt();
		System.out.println("第"+n+"月份的兔子对数为"+Fibo(n));//输出结果
		
	}
}

3.输出结果

请输入第几个月份
20
第20月份的兔子对数为6765

七、找素数

  • 判断101-102有几个素数,并输出所有结果

1.问题分析

  • 素数:如果除了1和它本身以外,不能被其他正整数整除,就叫素数

  • 我们先构造一个判断素数的方法,类型为boolean

  • for循环遍历101-200所有数字,每个数字调用方法,如果是素数,那么输出结果,计数器++

2.编码实现

import java.util.*;
public class Prime {

	public static boolean judge(int k)//定义有参返回方法
	{
		if(k<2)
			return false;
		for(int i=2;i<=k/i;i++)//素数判断
		{
			if(k%i==0)
				return false;
		}
		return true;
	}
	public static void main(String[] args) 
	{
		int sum=0;
		for(int i=101;i<=200;i++)//for循环遍历
		{
			if(judge(i))//调用方法
			{
				System.out.println(i);//输出结果
				sum++;
			}
		}
		System.out.println("101-200总共有"+sum+"个素数");
	}
}

3.输出结果

101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
101-200总共有21个素数

 八、数组元素复制

  • 静态初始化数组,存入1-9数字,将元素倒序存入动态初始化的数组中,要求输出动态初始化的数组元素

1.问题分析

2.编码实现

import java.util.*;
public class CopyArray {

	public static void main(String[] args) 
	{
		int [] array= {1,2,3,4,5,6,7,8,9};//静态初始化数组
		int i,n=array.length;
		int [] result=new int[n];//动态初始化数组
		for(i=0;i<n;i++)//倒序存入
		{
			result[i]=array[n-1-i];
		}
		for(i=0;i<n;i++)//输出结果
		{
			System.out.print(result[i]+" ");
		}
	}
}

3.输出结果

9 8 7 6 5 4 3 2 1 

九、评委打分

  • 在唱歌比赛中,有6名评委给选手打分,分数范围是[0 - 100]之间的整数。

  • 选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。

1.问题分析

  • 这一题我们先定义容量为6的动态数组,依次存入每个评委的打分,记录总和
  • 利用Arrays.sort(array);排序,减去一个开头最小的,结尾最大的
  • 求出平均有效成绩

2.编码实现

import java.util.*;
public class Grade {

	public static void main(String[] args) 
	{
		int [] array=new int[6];//动态初始化
		int i,sum=0;
		Scanner sc=new Scanner(System.in);
		for(i=0;i<6;i++)//输入数据
		{
			System.out.println("请输入第"+(i+1)+"个评委的打分");
			array[i]=sc.nextInt();
			sum+=array[i];
		}
		Arrays.sort(array);//从小到大排序
		sum-=(array[0]+array[5]);//去除无效得分
		System.out.println("去除一个最低分"+array[0]+"去除一个最高分"+array[5]);
		System.out.println("评委的有效得分为"+1.0*sum/4+"分");//输出结果
	}
}

3.输出结果

请输入第1个评委的打分
89
请输入第2个评委的打分
100
请输入第3个评委的打分
79
请输入第4个评委的打分
95
请输入第5个评委的打分
90
请输入第6个评委的打分
88
去除一个最低分79   去除一个最高分100
评委的有效得分为90.5分

十、数字加密

  • 某系统的数字密码,比如1983,采用加密方式进行传输,规则如下
  • 先得到每位数,然后每位数都加上 5 , 再对10求余,最后将所有数字反转,得到一串新数

1.问题分析

  • 我们将每位数据存入到数组中去,遍历数组每位数据按照规则进行更改,把更改后的数据从新存入到数组中
  • 最后不需要反转,直接输出就行,因为我们数组存储时设置倒序存储

2.编码实现

import java.util.*;
public class Encrypt {
	public static void main(String[] args) 
	{
		int i,n,k=0;
		Scanner sc=new  Scanner(System.in);
		System.out.println("请输入要加密的数字:");
		n=sc.nextInt();
		int [] array=new int[1024];//动态初始化数组
		while(true)//数组倒序存储
		{
			array[k++]=n%10;
			n=n/10;
			if(n==0)
				break;
		}
		for(i=0;i<k;i++)//应用规则
		{
			array[i]=(array[i]+5)%10;
		}
		System.out.println("加密之后的数字为:");
		for(i=0;i<k;i++)//输出结果
		{
			System.out.print(array[i]+" ");
		}
	}
}

3.输出结果

请输入要加密的数字:
1983
加密之后的数字为:
8 3 4 6 

附录:

猜你喜欢

转载自blog.csdn.net/qq_53673551/article/details/124737042