1、朋友聚会的时候可能会玩一个游戏:逢七过。
规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说:过。
为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-100之间的满足逢七必过规则的数据。
for (int i = 1; i <=100 ; i++) {
int ge =i%10;
int shi = i/10%10;
//如果个位或者十位是7或者7的倍数 就跳过
if(ge == 7 || shi == 7 || i%7 == 0){
continue;
}
System.out.print(i+" ");
}
2、有一个很有名的数学逻辑题叫做不死神兔问题。有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?
int [] tu = new int [20];
tu[0] = 1;
tu[1] = 1;
//兔子的对数 等于欠两个月兔子对数的和
for (int i = 2; i < tu.length; i++) {
tu[i] = tu[i-2] + tu[i-1];
}
System.out.println("第20个月有"+tu[19]+"对兔子");
3、我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。
百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?列出各种可能
int xiao = 0;
for (int i = 0; i < 20; i++) {
for (int j = 0; j < 33; j++) {
//100只鸡,减去公鸡和母鸡的只数
xiao = 100 - i - j;
//小鸡 一钱三只,所以小鸡的数量必须能被三整除
if(xiao%3 == 0 ){
if (i*5 + j*3 + xiao/3 == 100)
System.out.println(i+" " + j +" "+ xiao);
}
}
}
4、有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和,
要求是:求和的元素个位和十位都不能是7,并且只能是偶数。
int [] arr = {68,27,95,88,171,996,51,210};
int res = 0;
for (int i = 0; i < arr.length; i++) {
int ge = arr[i] %10;
int shi = arr[i] /10%10;
//个位和十位不等于7,并且是偶数
if (ge != 7 && shi != 7 && arr[i]%2 ==0){
res += arr[i];
System.out.print(arr[i]+" ");
}
}
System.out.println();
System.out.println(res);
5、设计一个方法,用于比较两个数组的内容是否相同。
public static boolean fa(int [] arr,int [] arr1) {
//判断数组元素个数
if (arr.length == arr1.length) {
//遍历数组
for (int i = 0; i < arr.length; i++) {
//如果元素不同就返回false
if (arr[i] != arr1[i]) {
return false;
}
}
}
return true;
}
public static void main (String[]args){
int[] arr = {156, 15, 235, 159, 123, 147, 369};
int[] arr1 = {156, 15, 35, 159, 123, 147, 369};
boolean a =fa(arr,arr1);
if(a){
System.out.println("数组元素相同");
}else{
System.out.println("数组元素不同");
}
}
6、已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据。定义一个方法,完成查找该数据在数组中的索引,并在控制台输出找到的索引值。
public static void fa(int[] arr,int a){
for (int i = 0; i < arr.length; i++) {
//判断数组元素中是否有该数值
if(arr[i] == a){
System.out.println("数值索引是"+i);
return;
}
}
System.out.println("找不到这个值");
}
public static void main(String[] args) {
int [] arr = {19, 28, 37, 46, 50};
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要找的数值");
int num = sc.nextInt();
fa(arr,num);
7、 已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值反转(在原数组中操作,不能定义第二个数组),反转后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出反转后的数组元素。
public static void fa(int [] arr){
int num = 0;
//数组元素长度/2,就是需要交换的次数
for (int i = 0; i < arr.length/2; i++) {
num = arr[i];
arr[i] = arr[arr.length -1 -i ] ;
arr[arr.length -1 -i ] = num;
}
//遍历输出数组
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[j]+ " ");
}
System.out.println();
}
public static void main(String[] args) {
int [] arr = {19, 28, 37, 46, 50};
fa(arr);
}
8、在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。
int num = 0;
int [] arr = new int[6];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 6; i++) {
System.out.println("请第"+(i+1)+"位评委打分");
arr[i] = sc.nextInt();
}
//快速排序,从小到大
Arrays.sort(arr);
//遍历求和,忽略第一个元素和最后一个元素
for (int j = 1; j < arr.length -1 ; j++) {
num += arr[j];
}
System.out.println("平均分为:"+(num/4));