21.回文数。【了解】
问题描述:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
public class lianxi {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int a;
do{
System.out.print("请输入一个5 位正整数:");
a = s.nextInt();
}while(a<10000||a>99999);
String ss =String.valueOf(a);
char[] ch = ss.toCharArray();
if(ch[0]==ch[4]&&ch[1]==ch[3]){
System.out.println("这是一个回文数");
} else {
System.out.println("这不是一个回文数");
}
}
}
//这个更好,不限位数
public class lianxi{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
boolean is =true;
System.out.print("请输入一个正整数:");
long a = s.nextLong();
String ss = Long.toString(a);
char[] ch = ss.toCharArray();
int j=ch.length;
for(int i=0; i
is=false;
}
if(is==true){
System.out.println("这是一个回文数");
} else {
System.out.println("这不是一个回文数");
}
}
}
22.判断100之内的素数。【重点】
//使用除sqrt(n)的方法求出的素数不包括2 和3
public class lianxi {
public static void main(String[] args) {
boolean b =false;
System.out.print(2 + " ");
System.out.print(3 + " ");
for(int i=3; i<100; i+=2) {
for(int j=2; j<=Math.sqrt(i); j++) {
if(i % j == 0) {
b = false;
break;
} else{
b = true;
}
}
if(b == true) {
System.out.print(i + " ");
}
}
}
}
//该程序使用除1 位素数得2 位方法,运行效率高通用性差。
public class lianxi {
public static void main(String[] args) {
int[] a = new int[]{2, 3, 5, 7};
for(int j=0; j<4; j++)
System.out.print(a[j] + " ");
boolean b =false;
for(int i=11; i<100; i+=2) {
for(int j=0; j<4; j++) {
if(i % a[j] == 0) {
b = false; break;
} else{
b = true;
}
}
if(b == true) {
System.out.print(i + " ");
}
}
}
}
23.3*3矩阵对角线元素之和。【了解】
public class lianxi {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int[][] a = new int[3][3];
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
a[i][j] = s.nextInt();
}
}
System.out.println("输入的3 * 3 矩阵是:");
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
int sum = 0;
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
if(i == j) {
sum += a[i][j];
}
}
}
System.out.println("对角线之和是:"+sum);
}
}
24.杨辉三角形。【了解】
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
public class lianxi{
public static void main(String[] args) {
int[][] a = new int[10][10];
for(int i=0; i<10; i++) {
a[i][i] = 1; a[i][0] = 1;
}
for(int i=2; i<10; i++) {
for(int j=1; j a[i][j] = a[i-1][j-1] + a[i-1][j];
}
}
for(int i=0; i<10; i++) {
for(int k=0; k<2*(10-i)-1; k++) {
System.out.print(" ");
}
for(int j=0; j<=i; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
}
25.报数游戏。【了解】
问题描述:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
public class lianxi {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("请输入排成一圈的人数:");
int n = s.nextInt();
boolean[] arr = new boolean[n];
for(int i=0; i
}
int leftCount = n;
int countNum = 0;
int index = 0;
while(leftCount > 1) {
if(arr[index] == true) {
countNum ++;
if(countNum == 3) {
countNum =0;
arr[index] = false;
leftCount --;
}
}
index ++;
}
index = 0;
}
for(int i=0; i
System.out.println("原排在第"+(i+1)+"位的人留下了。");
}
}
}
26.猴子分桃。【了解】
问题描述:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个, 它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
public class lianxi{
public static void main (String[] args) {
int i,m,j=0,k,count;
for(i=4;i<10000;i+=4) {
count=0; m=i;
for(k=0;k<5;k++) {
j=i/4*5+1;
i=j;
if(j%4==0)
count++;
else
break;
}
i=m;
if(count==4) {
System.out.println("原有桃子"+j+" 个");
break;
}
}
}
}
27.一个偶数总能表示为两个素数之和。【了解】
//由于用除sqrt(n)的方法求出的素数不包括2 和3,
//因此在判断是否是素数程序中人为添加了一个3。
public class lianxi{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n,i;
do{
System.out.print("请输入一个大于等于6 的偶数:");
n = s.nextInt();
} while(n<6||n%2!=0);
//判断输入是否是>=6 偶数,不是,重新输入
fun fc = new fun();
for(i=2;i<=n/2;i++){
if((fc.fun(i))==1&&(fc.fun(n-i)==1)) {
int j=n-i;
System.out.println(n+" = "+i+" + "+j);
}
//输出所有可能的素数对
}
}
}
class fun{
//判断是否是素数的函数
public int fun (int a) {
int i,flag=0;
if(a==3){
flag=1;
return(flag);
}
for(i=2;i<=Math.sqrt(a);i++){
if(a%i==0) {
flag=0;
break;
} else
flag=1;
}
return (flag) ;
//不是素数,返回0,是素数,返回1
}
}
//解法二
import java.util.*;
public class lianxi {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n;
do{
System.out.print("请输入一个大于等于6 的偶数:");
n = s.nextInt();
} while(n<6||n%2!=0);
//判断输入是否是>=6 偶数,不是,重新输入
for(int i=3;i<=n/2;i+=2){
if(f un(i)&&fun(n-i)) {
}
//输出所有可能的素数对
}
}
static boolean fun (int a){
//判断是否是素数的函数
boolean flag=false;
if(a==3){
flag=true;return(flag);
}
for(int i=2;i<=Math.sqrt(a);i++){
if(a%i==0) {
flag=false;
break;
} else
flag=true;
}
return (flag) ;
}
}
28.选择排序。【重点】
/**
* 选择排序
* 在未排序序列中找到最小元素,存放到排序序列的起始位置。
* 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。
* 以此类推,直到所有元素均排序完毕。
*/
public static void selectSort(int[] numbers) {
int size = numbers.length, temp;
for (int i = 0; i < size; i++) {
int k = i;
for (int j = size - 1; j >i; j--) {
if (numbers[j] < numbers[k])
k = j;
}
temp = numbers[i];
numbers[i] = numbers[k];
numbers[k] = temp;
}
}
29.插入排序。【重点】
/**
* 插入排序
* 从第一个元素开始,该元素可以认为已经被排序
* 取出下一个元素,在已经排序的元素序列中从后向前扫描
* 如果该元素(已排序)大于新元素,将该元素移到下一位置
* 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
* 将新元素插入到该位置中
* 重复步骤2
*/
public static void insertSort(int[] numbers) {
int size = numbers.length, temp, j;
for(int i=1; i
for(j = i; j > 0 && temp < numbers[j-1]; j--)
numbers[j] = numbers[j-1];
numbers[j] = temp;
}
}