【程序21】
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
【程序22】
题目:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!
【程序23】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
【程序24】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
【程序25】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
【程序26】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
1.略,懒得写了
【程序27】
题目:求100之内的素数 前面有判断素数的练习了,不想写了。
【程序28】
题目:对10个数进行排序
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第
二个元素与后8个进行比较,并进行交换。 没意思不写了
【程序29】
题目:求一个3*3矩阵对角线元素之和
1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
【程序30】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
【程序22】
题目:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!
【程序23】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
【程序24】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
【程序25】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
【程序26】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
1.略,懒得写了
【程序27】
题目:求100之内的素数 前面有判断素数的练习了,不想写了。
【程序28】
题目:对10个数进行排序
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第
二个元素与后8个进行比较,并进行交换。 没意思不写了
【程序29】
题目:求一个3*3矩阵对角线元素之和
1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
【程序30】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,
依次后移一个位置。
package javaimprove021;
/*
* 【程序21】TestJieCheng.java
题目:求1+2!+3!+...+20!的和
*/
public class Multiplicative {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum=0;
for(int i=1;i<=20;i++)
{
int temp=1;
for(int j=1;j<=i;j++)
{
temp*=j;
}
sum+=temp;
}
System.out.printf("前20项的阶乘的和为:%d",sum);
}
}
package javaimprove022;
/*
* 【程序22】TestJieCheng2.java
题目:利用递归方法求5!。
*/
public class Multi {
public int multi(int n)
{
if(n==1)
return 1;
return n*multi(n-1);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Multi mu=new Multi();
System.out.printf("5的阶乘为:%d",mu.multi(5));
}
}
package javaimprove023;
/*
* 【程序23】TestAge.java
题目:有5个人坐在一起,问第五个人多少岁?
他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁
。问第三个人,又说比第2人大两岁。
问第2个人,说比第一个人大两岁。
最后问第一个人,他说是10岁。请问第五个人多大?
问题分析:每个都说差两岁,这样就可以得到递归,递归的结束条件是当年龄为10岁的时候,这是第1个人。
*/
public class Age {
public int age(int n)
{
if(n==1)
return 10;
return 2+age(n-1);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Age age=new Age();
System.out.printf("第五个人的年龄为:%d",age.age(5));
}
}
package javaimprove024;
import java.util.Scanner;
/*
* 【程序24】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
*/
public class Digit {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入一个不多余五位数的正整数:");
Scanner in=new Scanner(System.in);
int number=in.nextInt();
//System.out.print(number/10000);
int n1=number/10000;//最高位
int n2=number%10000/1000;
int n3=number%1000/100;
int n4=number%100/10;
int n5=number%10;//最低位
System.out.println(n1!=0?"五位数":
(n2!=0?"四位数":
(n3!=0?"三位数":
(n4!=0?"二位数":"一位数"))));
System.out.println(n5*10000+n4*1000+n3*100+n2*10+n1);
}
}
package javaimprove025;
import java.util.Scanner;
/*
* 【程序25】 HuiWenShu.java
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
*/
public class Palindrome {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入一个五位数的正整数:");
Scanner in=new Scanner(System.in);
int number=in.nextInt();
//System.out.print(number/10000);
int n1=number/10000;//最高位
int n2=number%10000/1000;
int n3=number%1000/100;
int n4=number%100/10;
int n5=number%10;//最低位
if(n5==n1&&n4==n2)
{
System.out.println("这个数字是回文数!");
}else
{
System.out.println("这个数不是回文数!");
}
}
}
package javaimprove029;
import java.util.Scanner;
/*
* 【程序29】
题目:求一个3*3矩阵对角线元素之和
1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
*/
public class Matrix {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入矩阵的大小:");
Scanner in=new Scanner(System.in);
int n=in.nextInt();
double[][] matrix=new double[n][n];
double sum=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
matrix[i][j]=in.nextDouble();
if(i==j)
sum+=matrix[i][j];
}
}
System.out.println(sum);
}
}
package javaimprove030;
import java.util.Scanner;
/*
* 【程序30】 ArraySort.java
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,
依次后移一个位置。或者用二分法插入,在这里为了能够多次插入而不至于溢出,那么我们采用的笨办法是每次新建一个大1的数组接盘。
*/
public class ArraySort {
public int[] insert(int[] a,int n)//向数组array插入元素n
{
int[] newA=new int[a.length+1];
for(int i=0;i<a.length;i++)
{
if(n<=a[i])
{
for(int j=newA.length-1;j>i;j--)
{
newA[j]=a[j-1];
}
newA[i]=n;
printA(newA);
return newA;
}
else
{
newA[i]=a[i];
}
}
newA[a.length]=n;//插入数组的最后,特殊情况特殊处理
printA(newA);
return newA;
}
public void printA(int[] A)
{
for(int k:A)
{
System.out.printf("%d ",k);
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入数组元素(输入-1表示结束):");
//在这个小程序里,每输入 一个数就向数组插入进去
Scanner in=new Scanner(System.in);
int[] esist=new int[]{1,2,3,4,5};
int temp=in.nextInt();
ArraySort sort=new ArraySort();
while(temp!=0)
{
esist=sort.insert(esist, temp);
temp=in.nextInt();
}
}
}