?
目录
一、前言
二、编程训练
?三、减肥计划
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
七、找素数
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
九、评委打分
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
附录:
|