基础练习
1.逢七跳过(应用)
需求:朋友聚会的时候可能会玩一个游戏:逢七过。 规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7
的倍数时都要说:过。 为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-100之间的满足逢七必过
规则的数据。 这样,大家将来在玩游戏的时候,就知道哪些数据要说:过
public class test01 {
public static void main(String[] args) {
for (int i=1;i<100;i++){
//根据规则,用if语句实现数据的判断:要么个位是7,要么十位是7,要么能够被7整除
if (i%10==7 || i/10%7==7 || i%7==0){
System.out.println(i);
}
}
}
}
2.不死神兔(应用)
需求:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问第二十个月的兔子对数为多少?
public class test02 {
public static void main(String[] args) {
int[] arr = new int[20];
arr[0] = 1;
arr[1] = 1;
for (int i =2;i<arr.length;i++){
arr[i] = arr[i-1]+arr[i-2];
}
System.out.println(arr[19]);
}
}
3.百钱百鸡(应用)
需求:我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱
买百鸡,问鸡翁、鸡母、鸡雏各几何?
public class test03 {
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);
}
}
}
}
}
4.数组元素求和(应用)
需求:有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和, 要求是:求和的元素个位和十位都不能是7,并且只能是偶数
public class test04 {
public static void main(String[] args) {
int[] arr = {68,27,95,88,171,996,51,210};
int sum = 0;
for (int i= 0;i<arr.length;i++){
if (arr[i]%10 != 7 && arr[i]/10%10 != 7 && arr[i]%2 ==0){
sum += arr[i];
}
}
System.out.println(sum);
}
}
5.判断俩个数组是否相等(应用)
需求:定义一个方法,用于比较两个数组的内容是否相同
public class test05 {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55};
int[] arr2 = {11,22,33,44,55};
boolean flag = compare(arr, arr2);
System.out.println(flag);
}
public static boolean compare(int[] arr,int[] arr2){
if (arr.length != arr2.length){
return false;
}
for (int i=0;i<arr.length;i++){
if (arr[i] != arr2[i]){
return false;
}
}
return true;
}
}
6.查找元素在数组中出现的索引值(应用)
需求:已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引。并在控制台输出找到的索引值。如果没有查找到,则输出-1
public class test06 {
public static void main(String[] args) {
int[] arr = {19, 28, 37, 46, 50};
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据");
int number = scanner.nextInt();
int idenx = getIdenx(arr, number);
System.out.println(idenx);
}
public static int getIdenx(int[] arr,int number){
int index = -1;
for (int i = 0;i<arr.length;i++){
if (arr[i] == number){
index = i;
break;
}
}
return index;
}
}
7.数组元素反转(应用)
需求:已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换, 交换后的数组 arr = {50, 46, 37, 28,19}; 并在控制台输出交换后的数组元素。
public class test07 {
public static void main(String[] args) {
int[] arr = {19,28,37,46,50};
reverse(arr);
printArray(arr);
}
public static void reverse(int[] arr){
for (int start= 0,end = arr.length-1;start<=end;start++,end--){
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
public static void printArray(int[] arr) {
System.out.print("[");
for (int x = 0; x < arr.length; x++) {
if (x == arr.length - 1) {
System.out.print(arr[x]);
} else {
System.out.print(arr[x] + ", ");
}
}
System.out.println("]");
}
}
8.评委打分(应用)
需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)
public class test08 {
public static void main(String[] args) {
int[] arr = new int[6];
Scanner sc = new Scanner(System.in);
for(int x=0; x<arr.length; x++) {
System.out.println("请输入第" + (x + 1) + "个评委的打分:");
arr[x] = sc.nextInt();
}
int max = getMax(arr);
int min = getMin(arr);
int sum = getSum(arr);
int avg = (sum - max - min)/arr.length-2;
System.out.println(avg);
}
//求最大值
public static int getMax(int[] arr) {
int max = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}
return max;
}
//求最小值
public static int getMin(int[] arr) {
int min = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] < min) {
min = arr[x];
}
}
return min;
}
//求和
public static int getSum(int[] arr) {
int sum = 0;
for(int x=0; x<arr.length; x++) {
sum += arr[x];
}
return sum;
}
//遍历数组
public static void printArray(int[] arr) {
System.out.print("[");
for (int x = 0; x < arr.length; x++) {
if (x == arr.length - 1) {
System.out.print(arr[x]);
} else {
System.out.print(arr[x] + ", ");
}
}
System.out.println("]");
}
}