1.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),
几个数相加有键盘控制。
参考代码:
public class XiangJia {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要让几个数相加:");
int num = sc.nextInt();
System.out.println("请输入你要用来相加的数字:");
int number = sc.nextInt();
int temp = number;
int sum = 0;
int[] array = new int[num];
array[0] = number;
for (int i = 1; i < num; i++) {
number = number * 10 + temp;
array[i] = number;
}
for (int j = 0; j < num; j++) {
if(j < num - 1) {
System.out.print(array[j] + "+");
sum += array[j];
}
else {
System.out.print(array[j]);
sum += array[j];
}
}
System.out.println("=" + sum);
}
}
2.如果一个数等于它的所有因子的和(除了他自身),那么我们称这个数为完数.求出1000以内所有的完数.
参考代码:
public class WanShu {
public static void main(String[] args) {
System.out.println("1000以内所有的完数为:");
for (int i = 2; i < 1000; i++) {
int sum = 0;
for (int j = 1; j < i; j++) {
if(i % j == 0) {
sum += j;
}
}
if(sum == i) {
System.out.println(i);
}
}
}
}
3.判断101-200之间有多少个素数,并输出所有素数。素数又叫质数,就是除了1和它本身之外,再也没有整数能被它整除的数。也就是素数只有两个因子。
参考代码:
public class SuShu {
public static void main(String[] args) {
System.out.println("101到200之间所有的素数有:");
for (int i = 101; i < 201; i++) {
for (int j = 2; j < i; j++) {
// 判断i是否为素数,如果是素数就输出i,跳出当前循环
if (i % j == 0) {
break;
} else {
System.out.println(i);
break;
}
}
}
}
}
4.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
这个题纠结了好长时间,感觉我的方法太笨了,但是想不到其他好方法,希望大神可以多指教.
参考代码:
public class SanWeiShu {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4};
int count = 0;
int x, y, z;
for (int i = 0; i < array.length; i++) {
int num = 0;
num += array[i] * 1000;
x = num;
for (int j = 0; j < array.length; j++) {
num = x;
if(i != j) {
num += array[j] * 100;
y = num;
}
else {
continue;
}
for (int k = 0; k < array.length; k++) {
num = y;
if(k != j && k != i) {
num += array[k] * 10;
z = num;
}
else {
continue;
}
for (int l = 0; l < array.length; l++) {
num = z;
if(l != k && l != i && l != j) {
num += array[l];
count ++;
System.out.println(num);
}
}
}
}
}
System.out.println("共能组成" + count + "个四位数");
}
}
5.有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1:为了存储多个月的兔子对数,定义一个数组,用动态初始化完成数组元素的初始化,长度为月份
2:因为第1个月,第2个月兔子的对数是已知的,都是1,所以数组的第1个元素,第2个元素值也都是1
3:用循环实现计算每个月的兔子对数
4:输出数组中最后一个元素的值乘以2,就是要查看的月份的兔子总数
参考代码:
public class Test04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入月份来查看兔子总数:");
int month = sc.nextInt();
int[] arr = new int[month];
arr[0] = 1;
arr[1] = 1;
for (int i = 2; i < month; i++) {
arr[i] = arr[i - 2] + arr[i -1];
}
System.out.println("第20个月的兔子总数为:" + (2 * arr[month - 1]));
}
}
6.一球从100米高度自由落下,每次落地后反跳回原高度的一半再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
这个题也感觉我的做法不太科学 - -!
public class Qiu {
public static void main(String[] args) {
// 定义高度height
double height = 100;
// 定义球经过的总距离sumheight
// 默认已经第一次落地,所以总长度为100m
double sumheight = 100;
// 默认从第二次落地开始循环
for (int i = 2; i <= 10; i++) {
sumheight += height;
height /= 2;
}
System.out.println("经过10次反弹球经过的总长度为" + sumheight + "米");
}
}
7.企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万 之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分, 可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
参考代码:
public class JiangJin {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入当月的利润,单位为万元:");
double i = sc.nextDouble();
double sum;
if(i <= 10) {
sum = i * 0.1;
}
else if(i <= 20) {
sum = (i - 10) * 0.075 + 10 * 0.1;
}
else if(i <= 40) {
sum = (i - 20) * 0.05 + 10 * 0.1 + 10 * 0.075;
}
else if(i <= 60) {
sum = (i - 40) * 0.03 + 10 * 0.1 + 10 * 0.075 + 20 * 0.05;
}
else if(i <= 100) {
sum = ( i - 60) * 0.015 + 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03;
}
else {
sum = (i - 100) * 0.01 + 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015;
}
System.out.println("共可得奖金:" + sum + "万元");
}
}
8.输入两个正整数m和n,求其最大公约数和最小公倍数。
public class GongBeiShu {
public static void main(String[] args) {
// 通过键盘键入m和n的值
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数");
int m = sc.nextInt();
System.out.println("请输入第二个数");
int n = sc.nextInt();
// 定义最大公因数的默认值为1
int yinzi = 1;
int mn;
// 通过循环来求出最大公约数
for (int i = m - 1; i >= 2; i--) {
if(m % i ==0) {
for (int j = n - 1; j >= 2; j--) {
if(n % j == 0 && i == j) {
yinzi = j;
}
}
}
}
System.out.println("最小公倍数为:");
// 最小公倍数的计算公式为 m * n / 最大公约数
mn = m * n / yinzi;
System.out.println(mn);
}
}
9.利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
参考代码:
import java.util.Scanner;
public class ChengJi {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要判断的分数:");
double score = sc.nextDouble();
if(score > 100 || score < 0) {
System.out.println("你输入的成绩有误!");
}
else {
if(score >= 90) {
System.out.println("你的成绩等级为A");
}
else if(score >= 60) {
System.out.println("你的成绩等级为B");
}
else {
System.out.println("你的成绩等级为C");
}
}
}
}
10.输出9*9口诀
public class ChengFaBiao {
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
int chengji = i * j;
if(i == j) {
System.out.println(j + " * " + i + " = " + chengji);
}
else {
System.out.print(j + " * " + i + " = " + chengji + " ");
}
}
}
}
}