Java语言程序设计与数据结构(基础篇)课后练习题 第七章(二)

7.23

package demo;
import java.util.*;

public class diqizhang {
	 public static void main(String[] args){
		 boolean[] num = new boolean[101];
		 for(boolean num1:num)
			 num1=false;
		 for(int i=1;i<=100;i++){
			 int base = i;
			 while(base<=100){
				 num[base] =! num[base];
				 base += i;
			 }
		 }
	 for(int i=1;i<=100;i++){
		 if(num[i])
			 System.out.print(i+" ");
	 }
 }

}

7.24

package demo;
import java.util.*;

public static void main(String[] args){
		 int[] pattern = new int[4];
		 int countPick = 0;
		 int countPattern = 0;
		 while(countPattern<4){
			 int card = (int)(Math.random()*52);
			 countPick++;
			 if(pattern[card/13]==0){
				 pattern[card/13]=card;
				 countPattern++;
			 }
		 }
		 String[] dock = {"Spades","Clubs","Hearts","Diamonds"};
		 String[] point = {"Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"};
		 for(int i=0;i<4;i++)
			 System.out.printf("%s of %s\n", point[pattern[i]%13],dock[i]);
		 System.out.println("Number of picks: "+countPick);
}

}

7.25

package demo;
import java.util.*;
public class diqizhang {

public static void main(String[] args){
		 Scanner input = new Scanner(System.in);
		 System.out.print("Enter a b c: ");
		 double[] s = new double[3];
		 for(int i=0;i<3;i++)
			 s[i] = input.nextDouble();
		 double[] r = new double[2];
		 int nums = solveQuadratic(s,r);
		 System.out.println(nums+" roots");
		 for(int i=0;i<nums;i++)
			 System.out.print(r[i]+" ");
}
public static int solveQuadratic(double[] eqn,double[] roots){
	 double a = eqn[0];
	 double b = eqn[1];
	 double c = eqn[2];
	 double d = b*b-4*a*c;
	 if(d<0)
		 return 0;
	 else if(d==0){
		 roots[0]=-1*b/(2*a);
		 return 1;
	 }else{
		 roots[0]=(-1*b+Math.sqrt(d))/(2*a);
		 roots[1]=(-1*b-Math.sqrt(d))/(2*a);
		 return 2;
	 }
}

}

7.26

package demo;
import java.util.*;
public class diqizhang {

public static void main(String[] args){  
	        Scanner input = new Scanner(System.in);
	        System.out.print("Enter list1 size and contents: ");
	        int s1 = input.nextInt();
	        int[] l1 = new int[s1];
	        for(int i=0;i<s1;i++)
	            l1[i]=input.nextInt();
	        System.out.print("Enter list2 size and contents: ");
	        int s2 = input.nextInt();
	        int[] l2 = new int[s2];
	        for(int i=0;i<s2;i++)
	            l2[i]=input.nextInt();
	        if(equals(l1,l2))
	            System.out.println("Two lists are strictly identical");
	        else
	            System.out.println("Two lists are not strictly identical");
	    }
public static boolean equals(int[] list1,int[] list2){
	        int l1 = list1.length;
	        int l2 = list2.length;
	        if(l1!=l2)
	            return false;
	        else{
	            for(int i=0;i<l1;i++){
	                if(list1[i]!=list2[i])
	                    return false;
	            }
	            return true;
	        }
	    }

​ }

7.27

package demo;
import java.util.*;
public class diqizhang {

public static void main(String[] args){
	        Scanner input = new Scanner(System.in);
	        System.out.print("Enter list1 size and contents: ");
	        int s1 = input.nextInt();
	        int[] l1 = new int[s1];
	        for(int i=0;i<s1;i++)
	            l1[i]=input.nextInt();
	        System.out.print("Enter list2 size and contents: ");
	        int s2 = input.nextInt();
	        int[] l2 = new int[s2];
	        for(int i=0;i<s2;i++)
	            l2[i]=input.nextInt();
	        Arrays.sort(l1);//arrays.sort()对l1和l2进行排序。
	        Arrays.sort(l2);
	        if(equals(l1,l2))
	            System.out.println("Two lists are identical");
	        else
	            System.out.println("Two lists are not identical");
	    }
public static boolean equals(int[] list1,int[] list2){
	        int l1 = list1.length;
	        int l2 = list2.length;
	        if(l1!=l2)
	            return false;
	        else{
	            for(int i=0;i<l1;i++){
	                if(list1[i]!=list2[i])
	                    return false;
	            }
	            return true;
	        }
}

​ }

7.28

package demo;
import java.util.*;
public class diqizhang {

public static void main(String[] args){
	        Scanner input = new Scanner(System.in);
	        System.out.print("Enter 10 numbers: ");
	        int[] nums = new int[10];
	        for(int i=0;i<10;i++)
	        	nums[i] = input.nextInt();
	        int count = 1;
	        for (int i = 0; i < 10; i++)
	        	for (int j = i + 1; j < 10; j++) {
	        		System.out.print(count + ":" + nums[i] + " " + nums[j] + " ");
	        		if(j == 9)
	        			System.out.print("\n");
	        		count++;
	        	}
}

}

7.29

package demo;
import java.util.*;
public class diqizhang {

public static void main(String[] args){
         int count = 0;
	     while(true){
	    	 int card1 = (int)(Math.random()*52);
	    	 int card2 = (int)(Math.random()*52);
	    	 while(card2 == card1)
	    		 card2 = (int)(Math.random()*52);
	    	 int card3 = (int)(Math.random()*52);
	    	 while(card3==card1||card3==card2)
	    		 card3 = (int)(Math.random()*52);
	    	 int card4 = (int)(Math.random()*52);
	    	 while(card4==card3||card4==card2||card4==card1)
	    		 card4 = (int)(Math.random()*52);
	    	 count++;
	    	 if(card1%13+card2%13+card3%13+card4%13+4==24)
	    		 break;
	     }
	     System.out.print("There are "+count+" times.");
}

}

7.30

package demo;
import java.util.*;
public class diqizhang {

public static void main(String[] args){
		 Scanner input = new Scanner(System.in);
		 System.out.print("Enter the number of values: ");
		 int num = input.nextInt();
		 System.out.print("Enter the values: ");
		 int[] n = new int[num];
		 for(int i=0;i<num;i++)
			 n[i]=input.nextInt();
		 if(isConsecutiveFour(n))
			 System.out.println("The list has consecutive fours.");
		 else 
			 System.out.println("The list has no consevutive fours.");
}
public static boolean isConsecutiveFour(int[] values){
		boolean num = false;
		int base = values[0];
		int count=1;
		for(int i=1;i<values.length-1;i++){
			if(values[i]==base)
				count++;
			else{
				base = values[i];
				count=1;
			}
			if(count==4){
				num = true;
				break;
			}
		}
		return num;
}

}

7.31

package demo;
import java.util.*;
public class diqizhang {

public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        System.out.print("Enter list1 size and contents: ");
        int num1 = input.nextInt();
        int[] l1  =new int[num1];
        for(int i=0;i<num1;i++)
            l1[i]=input.nextInt();
        System.out.print("Enter list2 size and contents: ");
        int num2 = input.nextInt();
        int[] l2  =new int[num2];
        for(int i=0;i<num2;i++)
            l2[i]=input.nextInt();
       int[] nums=merge(l1,l2);
       System.out.print("list 1 is ");
       for(int i=0;i<num1;i++)
           System.out.print(l1[i]+" ");
       System.out.println();
       System.out.print("list 2 is ");
       for(int i=0;i<num2;i++)
           System.out.print(l2[i]+" ");
       System.out.println();
       System.out.print("The merged list is ");
       for(int i=0;i<num1+num2;i++)
           System.out.print(nums[i]+" ");
       System.out.println();
}
public static int[] merge(int[] list1,int[] list2){
		int l1 = list1.length;
		int l2 = list2.length;
		int list = l1+l2;
		int[] nums = new int[list];
		int count=0;
		int p1 = 0;
		int p2 = 0;
		while(p1<l1&&p2<l2){
			if(list1[p1]<list2[p2]){
				nums[count] = list1[p1];
				count++;
				p1++;
			}else{
				nums[count]=list2[p2];
				count++;
				p2++;
			}
		} 
       if(p1<l1-1){
            for(int i=count;i<=l1+l2-1;i++){
                nums[i]=list1[p1];
                p1++;
            }
        }else if(p2<l2-1){
            for(int i=count;i<=l1+l2-1;i++){
            	nums[i]=list2[p2];
                p2++;
            }
        }
        return nums;
}

}

7.32

这个题的参见,被挡了,我访问不进去,参考别人的方法做的,(__) 。

package demo;
import java.util.*;
public class diqizhang {

public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        System.out.print("Enter list1 size: ");
        int num1 = input.nextInt();
        System.out.print("Enter list contents: ");
        int[] l1  =new int[num1];
        for(int i=0;i<num1;i++)
            l1[i]=input.nextInt();
        partition(l1);
        System.out.print("After the partition, the list is ");
        for(int i=0;i<num1;i++)
            System.out.print(l1[i]+" ");
        System.out.println();
}
public static int partition(int[] list){
        int len = list.length;
        int[] help = new int[2*len];
        int pivot = list[0];
        help[len+1]=list[0];
        int p1 = len;
        int p2 = len+2;
        for(int i=1;i<len;i++)
        {
            if(list[i]>pivot)
            {
                help[p2]=list[i];
                p2++;
            }
            else
            {
                help[p1]=list[i];
                p1--;
            }
        }
        for(int i=0;i<len;i++)
            list[i]=help[p1+1+i];
        return len-p1;
}

}

7.33

这个题我没看3-9,直接写出来了,看题目就是数组字符串存储动物名称,应该没难度。

package demo;
import java.util.*;
public class diqizhang {

public static void main(String[] args){
	        Scanner input = new Scanner(System.in);
	        System.out.print("Enter the Chinese Zodiac: ");
	        String[] zoo = new String[12];
	        for(int i=0;i<12;i++)
	        	zoo[i] = input.next(); //既然是十二生肖,就自行输入鼠(Rat)、牛(Ox)、虎(Tiger)、兔(Hare)、龙(Dragon)、蛇(Snake)、马(Horse)、羊(Sheep)、猴(Monkey)、鸡(Rooster)、狗(Dog)、猪(Boar)
	        for(int j=0;j<zoo.length;j++){
	        	System.out.print(zoo[j]+",");
	        }
}

}

7.34

package demo;
import java.util.*;
public class diqizhang {

public static void main(String[] args){
		Scanner input=new Scanner(System.in);
		System.out.print("Enter a string: ");
		String str = input.next();
		System.out.println(sort(str));
}
public static String sort(String s){
		int len = s.length();
		char[] str = new char[len];
		for(int i=0;i<len;i++)
			str[i]=s.charAt(i);
		Arrays.sort(str);
		String str2 ="";
		for(int i=0;i<len;i++)
			str2 += str[i];
		return str2;
}

}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xupengboo

你的鼓励将是我创作最大的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值