1.数组元素中各种的值,数组复制,数组反转(两种方法)
package date0222;
public classZuoYe2 {
publicstaticvoidmain(String[] args) {
// 定义一个int[] a ={4,2,0,-1,-8,23,9}
// 求数组元素的最大值、最小值、平均数、总和、数组的复制、反转
int[]arr = { 4, 2, 0, -1, -8, 23, 9 };
// 复制数组arr1
int[]arr1 = new int[7];
// 反转数组arr2
int[]arr2 = new int[7];
intmax = 0;
intmin = 0;
intsum = 0;
doubleavg = 0;
for(inti = 0; i< arr.length;i++) {
if(arr[i]>= arr[max]){
max = i;
}
if(arr[i]<= arr[min]){
min = i;
}
sum = sum+ arr[i];
}
avg = (double) sum/ 7;
System.out.println("最大值为" + arr[max]);
System.out.println("最小值为" + arr[min]);
System.out.println("平均数为" + avg);
System.out.println("总和为" + sum);
System.out.println("数组复制");
for(inti = 0; i< arr1.length;i++) {
arr1[i] =arr[i];
System.out.print(arr[i] + " ");
}
System.out.println();
转换时需要定义一个中间数
//方式1
System.out.println("数组反转");
for(inti = 0; i< arr.length/2;i++) {
inttemp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
for(inti = 0; i< arr.length;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
//方式二
//定义两个变量来保存交换元素的下标,一个从0开始每次++,
//一个从长度-1开始每次--,直到相等
for(int start = 0,end =arr.length-1;start<end;start++,end--){
inttemp = arr[end];
arr[end]= arr[start];
arr[start]= temp;
}
for(inti = 0; i< arr.length;i++) {
System.out.print(arr[i]+" ");
}
}
}
定义最大值或最小值时可定义成
int max = arr[0];
int min =arr[0];
......
if(arr[i]>=max){
max=arr[i];
}
或者:
int max =0;
int min = 0;
......
if(arr[i]>=arr[max]){
max = i;
}
2.前后两数相加等于第三数的问题(红色代码处)
package luoji;
public classLuoJi1 {
publicstaticvoidmain(String[] args) {
/*
* 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
* 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,
* 问每个月的兔子总数为多少?
*/
System.out.println("第1个月的兔子对数: 1");
System.out.println("第2个月的兔子对数: 1");
/*思路:从第三个月起每个月的兔子数就是上两个月兔子数只和
* 设f1为前一月兔子数,f2为后一月兔子数
*/
intf1 = 1, f2= 1, f, M=24;
for(int i=3; i<=M;i++) {
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.println("第" + i+"个月的兔子对数: "+f2);
}
}
}
3.水仙花数问题(通过取余和除获取每一位的值)
package luoji;
public classLuoJi3 {
publicstaticvoidmain(String[] args) {
/*
* 打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,
* 其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 "
* 因为153=1的三次方+5的三次方+3的三次方。
*/
intge;
intshi;
intbai;
System.out.println("水仙花数有");
for(inti = 100; i<= 999; i++) {
// 提取个十百位的值
ge = i %10;
shi = i %100 / 10;
bai = i /100;
if(ge*ge*ge+shi*shi*shi+bai*bai*bai == i){
System.out.print(i+" ");
}
}
}
}
package date0221;
import java.util.Scanner;
public classZuoYe17 {
publicstaticvoidmain(String[] args) {
/*
* 所谓回文数是指正着数和倒着数一样大,比如1001,5005,8228,9999。
* 请打印出1000-9999之间所有的回文数
*/
System.out.println("1000到9999之间所有的回文数有:");
inta = 0;
for(int x=1000;x<=9999;x++){
//提取每位的数字
intge = x%10;
intshi = x%100/10;
intbai = x%1000/100;
intqian = x/1000;
if(ge==qian&&shi==bai){
System.out.print(x);
System.out.print("\t");
a++;
if(a%10==0){
System.out.println();
}
}
}
}
}