基础练习题
1
朋友聚会的时候可能会玩一个游戏:逢七过。
规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说:过。
为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-100之间的满足逢七必过规则的数据。
这样,大家将来在玩游戏的时候,就知道哪些数据要说:过。
产考答案
public static void main(String[] args) {
for (int i=1;i<100;i++){
if (i%10==7||i/10%10==7||i%7==0){
System.out.println("过,拐");
}else{
System.out.println(i);
}
}
}
2
需求:
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,问第二十个月的兔子对数为多少?
产考答案
(1)
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]);
}
(2)
第二种思路:
public static void main(String[] args) {
int month1 = 1;
int month2 = 0;
int chengnian = 0;
int month = 1;
while (true) {
System.out.print("第" + month + "月: ");
if (month > 2) {
chengnian = month2 + chengnian;
}
if (month > 1) {
month2 = month1;
month1 = chengnian;
}
int sum = month1 + month2 + chengnian;
System.out.println(sum);
if (month == 20) {
break;
}
month++;
}
}
3:
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。
百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
参考答案
public static void main(String[] args) {
for (int i=0;i<=33;i++){
for (int x=0;x<=20;x++){
int z=100-i-x;
if (z%3==0&&x*5+i*3+z/3==100){
System.out.println("公鸡:"+x+"只, "+"母鸡:"+i+"只, "+"小鸡"+z+"只");
}
}
}
}
4:
需求:
有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和,
要求是:求和的元素个位和十位都不能是7,并且只能是偶数
参考答案
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
需求:
已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换,
交换后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出交换后的数组元素。
参考答案
public static void main(String[] args) {
int [] arr ={19, 28, 37, 46, 50};
Zhuan(arr);
bianLi(arr);
}
public static void fanZhuan(int[] arr) {
for (int s=0,e=arr.length-1;s<=e;s++,e--) {
int c=arr[s];
arr[s]=arr[e];
arr[e]=c;
}
}
public static void bianLi(int []arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i==arr.length-1){
System.out.print(arr[i]);
}else{
System.out.print(arr[i]+", ");
}
}
System.out.println("]");
}
6
需求:
在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。
参考答案
public static void main(String[] args) {
double[] arr = new double[6];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第" + (i + 1) + "个评委的分数");
arr[i] = sc.nextInt();
}
double max = getMax(arr);
double min = getMin(arr);
double sum = getSum(arr);
double mean = (sum - max - min) / (arr.length - 2);
System.out.println("选手的平均分是:" + mean);
}
public static double getMax(double[] arr) {
double max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
public static double getMin(double[] arr) {
double min = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
public static double getSum(double[] arr) {
double sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
7
需求:自定义一个方法求出所有水仙花并返回
因为水仙花是多个所以返回时要用数组接收
参考答案
public static int[] getSXh() {
int count=0;
for (int i=100;i<1000;i++){
int ge=i%10;
int shi=i/10%10;
int bai=i/100;
if (ge*ge*ge+shi*shi*shi+bai*bai*bai==i){
count++;
}
}
int[]arr=new int[count];
for (int i=100;i<1000;i++){
int ge=i%10;
int shi=i/10%10;
int bai=i/100;
if (ge*ge*ge+shi*shi*shi+bai*bai*bai==i){
arr[--count]=i;
}
}
return arr;
}
public static void main(String[] args) {
int[]arr=getSXh();
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}