【程序21】
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
package zuoYe;
public class Test21 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0;
for(int i =1;i<=20;i++){
int count = 1;
for(int j = 1;j<=i;j++){
count = count*j;
}
sum = sum+count;
}
System.out.println(sum);
}
}
【程序22】
题目:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!
package zuoYe;
import java.util.Scanner;
public class Test22 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.println("请问你要计算几的阶乘");
int n = in.nextInt();
int sum = 1;
if(n == 1){
n=1;
}else{
for(int i = n;i>0;i--){
sum = sum*i;
}
System.out.println(n+"的阶乘是"+sum);
}
}
}
【程序23】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
package zuoYe;
public class Test23 {
public static void main(String[] args) {
int a = 10;
for(int i = 1;i<=5;i++){
if(i ==1){
System.out.println("第"+i+"个人是"+a+"岁");
}else{
a = a+2;
System.out.println("第"+i+"个人是"+a+"岁");
}
}
System.out.println("第五个人是"+a+"岁");
}
}
【程序24】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
package zuoYe;
import java.util.Scanner;
public class Test24 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.println("请输入一个不多于5位的正整数:");
int n = in.nextInt();
int sum = 0;
int count = 0;
System.out.print("该数字逆序输出为:");
while(n!= 0){
count = n%10;
n= n/10;
sum++;
System.out.print(count);
}
System.out.println("\n该数字的位数有"+sum+"位");
}
}
【程序25】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
package zuoYe;
import java.util.Scanner;
public class Test25 {
public static void main(String[] args) {
// TODO Auto-generated method stub
while(true){
Scanner in = new Scanner(System.in);
System.out.println("请输入一个不多于5位的正整数:");
int n = in.nextInt();
if(9999<n&&n<100000){
int n1 = n/10000;
int n2 = n/1000%10;
int n3 = n/100%10;
int n4 = n/10%10;
int n5 = n%10;
if(n1==n5&&n2==n4){
System.out.println("该数字是回文数");
}else{
System.out.println("该数字不是回文数");
}
break;
}else{
System.out.println("输入错误,请重新输入");
}
}
}
}
【程序26】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
package zuoYe;
import java.util.Scanner;
public class Test26 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.println("请输入第一个字符:");
String str = in.next();
char ch = str.charAt(0);
if(ch=='m'){
System.out.println("MONDAY");
}
else if(ch == 't'){
System.out.println("请输入第二个字符:");
String str2 = in.next();
char ch2 = str2.charAt(0);
if(ch2 =='u'){
System.out.println("TUSEDAY");
}else if(ch2 =='h'){
System.out.println("THURSDAY");
}else{
System.out.println("输入错误!");
}
}
else if(ch =='w'){
System.out.println("WEDNSEDAY");
}
else if(ch=='f'){
System.out.println("FRIDAY");
}
else if(ch=='s'){
System.out.println("请输入第二个字符:");
String str2 = in.next();
char ch2 = str2.charAt(0);
if(ch2 =='a'){
System.out.println("SATURDAY");
}else if(ch2 =='u'){
System.out.println("SUNDAY");
}else{
System.out.println("输入错误!");
}
}else{
System.out.println("输入错误!");
}
}
}
【程序27】
题目:求100之内的素数
package zuoYe;
public class Test27 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i ,j;
for(i = 1;i<=100;i++){
for( j = 2;j<i;j++){
if(i%j==0){
break;
}
}
if(i==j){
System.out.println(j+" ");
}
}
}
}
【程序28】
题目:对10个数进行排序
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
package zuoYe;
import java.util.Scanner;
public class Test28 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int a[] = new int[10];
System.out.println("请输入10个数字:");
for(int i = 0;i<10;i++){
a[i] = in.nextInt();
}
for(int i = 0;i<10;i++){
for(int j = i+1;j<10;j++){
if(a[i]>a[j]){
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for(int i = 0;i<10;i++){
if(a[i]==0){
System.out.println(0);
}
System.out.print(a[i]+" ");
}
System.out.println();
System.out.println("交换以后的数是:");
for(int i = 0;i<=a.length/2;i++){
int t = a[i];
a[i] = a[a.length-i-1];
a[a.length-i-1] = t;
}
for(int i = 0;i<a.length;i++){
System.out.print(a[i]+"\t");
}
}
}
【程序29】
题目:求一个3*3矩阵对角线元素之和
1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
package zuoYe;
import java.util.Scanner;
public class Test29 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.println("请输入数据:");
int a[] [] = new int[3][3];
for(int i = 0;i<3;i++){
for(int j = 0;j<3;j++){
a[i][j] = in.nextInt();
}
}
int sum = 0;
int sum2 = 0;
for(int i = 0;i<a.length;i++){
for(int j =0;j<a.length;j++ ){
if(i==j){
sum = sum+a[i][j];
}
if(i==a.length-i-1){
sum2 = sum2+a[i][j];
}
}
}
System.out.println("对角线之和分别是:"+sum+"和"+sum2);
}
}
【程序30】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
package zuoYe;
import java.util.Arrays;
import java.util.Scanner;
public class Test30 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int a[] = {1,5,2,6,3,12,8};
System.out.print("原来的数组是:");
for(int i = 0;i<a.length;i++){
System.out.print(a[i]+"\t");
}
Arrays.sort(a);
System.out.println("\n原来的数组惊醒排序以后:");
for(int i = 0;i<a.length;i++){
System.out.print(a[i]+"\t");
}
System.out.println();
System.out.println("请输入要插入的数字:");
int num = in.nextInt();
insert(num,a);//向数组中插入数字
}
private static int[] insert(int num,int[] a){
int[] tempArray=new int[a.length+1];//定义数组存放插入后的数组。
if(num>a[a.length-1]){//n大于排序好的数组最后一位,直接把n放到tempArray最后一位。
tempArray[a.length]=num;
for(int i=0;i<a.length;i++){
tempArray[i]=a[i]; //之前的数字按顺序赋值。
}
}else{
for(int i=0;i<a.length;i++){
if(num<a[i]){ //找到原来数组中大于n的第一位,并将n放在此位置
//给之前没变的数组赋值
for(int j=0;j<i;j++){
tempArray[j]=a[j];
}
//后面向后挪一位
for(int k=i;k<a.length;k++){
tempArray[k+1]=a[k];
}
tempArray[i]=num;
break;
}
}
}
System.out.println("插入以后的排序是:");
for(int i = 0;i<tempArray.length;i++){
System.out.print(tempArray[i]+" ");
}
return tempArray;
}
}
/*
System.out.println("插入以后的排序是:");
for(int i = 0;i<d.length;i++){
System.out.print(d[i]+" ");
*/