解题思路:
写出一个连续的数字 再想办法算出它的反序
12345
12345%10=5 12345/10=1234
1234%10=4 1234/10=123
123%10=3 123/10=12
12%10=2 12/10=1
1%10=1 1/10=0
54321用一个有规律的式子来表示这个反序
5*10000+4*1000+3*100+2*10+1
(5*1000+4*100+3*10+2)*10+1
((5*100+4*10+3)*10+2)*10+1
(((5*10+4)*10+3)*10+2)*10+1
((((0*10+5)*10+4)*10+3)*10+2)*10+1sum=0
sum=sum*10+5; //5
sum=sum*10+4; //54
sum=sum*10+3; //543
sum=sum*10+2; //5432
sum=sum*10+1; //54321
代码及输出:
import java.util.Scanner;
class Demo03_04{
public static void main(String[] args){
//1.输入一个数字
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
int num=scanner.nextInt();
int temp=num;
//2.拼接出该数字的反序
int sum=0;
sum=sum*10+num%10;
num/=10;
sum=sum*10+num%10;
num/=10;
sum=sum*10+num%10;
num/=10;
sum=sum*10+num%10;
num/=10;
sum=sum*10+num%10;
num/=10;
sum=sum*10+num%10;
num/=10;
if(sum==temp){
System.out.println("是回文");
}else{
System.out.println("不是回文");
}
}
}
解题思路:
首先我们先列出这道题我们需要定义的类它们分别是: 圆的圆心 圆的半径 点的坐标 距离
下面列出解题的大体步骤:'
1.提示用户输入点的坐标
2.计算点到圆心之间的距离
3.判断距离和半径之间的关系
距离>半径 点在圆外
距离==半径 点在圆上
距离<半径 点在圆内
代码及输出:
import java.util.Scanner;
class Demo03_08{
public static void main(String[] args){
//1.
Scanner scanner=new Scanner(System.in);
System.out.print("请输入坐标点:");
double x=scanner.nextDouble();
double y=scanner.nextDouble();
//2.
double xo=0;
double yo=0;
double radius=10;
double distance=Math.sqrt(Math.pow(x-xo,2)+Math.pow(y-yo,2));
//3.
if(distance>radius){
System.out.println("点在圆外");
}else if(distance==radius){
System.out.println("点在圆上");
}else{
System.out.println("点在圆内");
}
}
}
解题思路:
以(x1,y1)为原点绘制坐标图,先画出小矩形与大矩形内四角相接的时候
再画出小矩形在大矩形外部的情况
代码及输出:
import java.util.*; class Demo03_10{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); System.out.print("请输入第一个矩形的中心点坐标x,y和长,高:"); double x1 = scanner.nextDouble(); double y1 = scanner.nextDouble(); double w1 = scanner.nextDouble(); double h1 = scanner.nextDouble(); System.out.print("请输入第二个矩形的中心点坐标x,y和长,高:"); double x2 = scanner.nextDouble(); double y2 = scanner.nextDouble(); double w2 = scanner.nextDouble(); double h2 = scanner.nextDouble(); //计算第二个矩形中心点的范围 double inMinX = x1-(w1-w2)/2; double inMaxX = x1+(w1-w2)/2; double inMinY = y1-(h1-h2)/2; double inMaxY = y1+(h1-h2)/2; double outMinX = x1-(w1+w2)/2; double outMaxX = x1+(w1+w2)/2; double outMinY = y1-(h1+h2)/2; double outMaxY = y1+(h1+h2)/2; //判断是否在内或外或嵌套 if(x2>=inMinX&&x2<=inMaxX&&y2>=inMinY&&y2<=inMaxY){ System.out.println("在内"); }else if(x2>=outMaxX||x2<=outMinX||y2>=outMaxY||y2<=outMinY){ System.out.println("在外"); }else{ System.out.println("嵌套"); } } }
代码:
class Demo03_12{
/*
21 42
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16~21
3 7
*/
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1.输入两个数字
System.out.print("请输入两个数字:");
int n1=scanner.nextInt();
int n2=scanner.nextInt();
int gcd=1;
for(int i=n1<n2?n1:n2;i>=1;i--){
if(n1%i==0&&n2%i==0){
gcd=i;
break;
}
}
System.out.println(gcd);
}
}
思路:
120 2~120 ->2
60 2~60 ->2
30 2~30 ->2
15 2~15 ->3
5 2~5 ->5
代码:
import java.util.Scanner;
class Demo03_13{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
int num=scanner.nextInt();
while(true){
for(int i=2;i<=num;i++){
if(num%i==0){
System.out.print(i+" ");
num=num/i;
break;
}
}
if(num==1){
break;
}
}
}
}
代码及提示
class Demo03_21{
public static void main(String[] args){
//6 : 1 2 3 4 5 6
//28: 1 2 4 7 14
//n : 1 ~ n/2
int sum=0;
for(int n=2;n<=10000;n++){
for(int i=1;i<=n/2;i++){
if(n%i==0){
sum+=i;
}
}
if(n==sum){
System.out.println("完全数"+n);
}
sum=0;
}
}
}
代码参考:
import java.util.Scanner;
class Demo03_24{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int num=0;
int max=0;
int count=0;
System.out.print("请输入数字:");
while(true){
num=scanner.nextInt();
if(num==0){
break;
}else if(num>max){
max=num;
count=1;
}else if(num==max){
count++;
}
}
System.out.println("max="+max+",count="+count);
}
}