首页 > 编程语言 > 详细

JAVA第一次习题集-设计与分析

时间:2021-04-03 20:58:06      阅读:30      评论:0      收藏:0      [点我收藏+]
  • 第一题
import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
	Scanner input=new Scanner(System.in);
	int a=input.nextInt();
	int b=input.nextInt();
	int sum ;
        sum =a+b;
         System.out.print(sum);
    
    }
}

  第一题计算两数之和,用到了有关JAVA的输入与输出语句,是一道相对基础的题目,通过这个题更好的是对于我们从c语言到JAVA语言的一个过渡,简单的输入与输出,以及怎样定义一个变量,习题一的题目较为简单

  • 第二题
 1 import java.util.Scanner;
 2 public class Main {  
 3 public static void main(String[] args) { 
 4     
 5     Scanner input =new Scanner(System.in);
 6     String string=input.nextLine();
 7     char zm=string.charAt(0);
 8     switch(zm) {
 9     
10     case‘a‘:
11     case‘b‘:
12     case‘c‘:
13     case‘A‘:
14     case‘B‘:
15     case‘C‘:
16         System.out.println("2");
17         break;
18     case‘d‘:
19     case‘e‘:
20     case‘f‘:
21     case‘D‘:
22     case‘E‘:
23     case‘F‘:
24         System.out.println("3");
25         break;
26     case‘g‘:
27     case‘h‘:
28     case‘i‘:
29     case‘G‘:
30     case‘H‘:
31     case‘I‘:
32         System.out.println("4");
33         break;
34     case‘j‘:
35     case‘k‘:
36     case‘l‘:
37     case‘J‘:
38     case‘K‘:
39     case‘L‘:
40         System.out.println("5");
41         break;
42     case‘m‘:
43     case‘n‘:
44     case‘o‘:
45     case‘M‘:
46     case‘N‘:
47     case‘O‘:
48         System.out.println("6");
49         break;
50     case‘p‘:
51     case‘q‘:
52     case‘r‘:
53     case‘s‘:
54     case‘P‘:
55     case‘Q‘:
56     case‘S‘:
57     case‘R‘:
58         System.out.println("7");
59         break;
60     case‘t‘:
61     case‘u‘:
62     case‘v‘:
63     case‘T‘:
64     case‘U‘:
65     case‘V‘:
66         System.out.println("8");
67         break;
68     case‘w‘:
69     case‘x‘:
70     case‘y‘:
71     case‘z‘:
72     case‘W‘:
73     case‘X‘:
74     case‘Y‘:
75     case‘Z‘:
76         System.out.println("9");
77         break;
78         default:
79             System.out.println(zm+" is an invalid input");
80     
81     }
82     
83    }
84 
85 }

第二题运用了JAVA中的switch语句进行电话号码间数字的转化,与C语言的switch语句的用法没有较大的区别,题目二也相对见到那。

  • 第三题

 

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         int score=input.nextInt();
 7         if (score>=90)
 8             System.out.println("A");
 9         else if(score>=80)
10             System.out.println("B");
11         else if(score>=70)
12             System.out.println("C");
13         else if(score>=60)
14             System.out.println("D");
15         else
16             System.out.println ("E");
17         }
18 }

第三题 有关于 if 以及 if else 的嵌套使用来判断学生的成绩类型,在之后老师讲解到,有关程序的圈复杂度时,我也知道了,if语句越多的代码圈复杂度越高,在做这个题时我仍然想到的是在C语言中学到的东西,这就导致了if语句较多,只达到了解题的目的,在今后的编程学习中,我要做到的是有关于代码的优化,和减少他们的圈复杂度。

  • 第四题

 

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int type = input.nextInt();
        float money=input.nextFloat();
        float money2 ;
        if(money>=0) {
        if(type==0)
        {
            if(money<8350)
                money2=(float) (money*0.1);
            else if(money<=33950)
                money2=(float) ((money-8350)*0.15+835);
            else if(money<=82250)
                money2=(float) ((money-33950)*0.25+4675);
            else if(money<=171550)
                money2=(float) ((money-82250)*0.28+16750);
            else if(money<=372950)
                money2=(float) ((money-171550)*0.33+41754);
            else
                money2=(float) (108216+(money-372950)*0.35);
            System.out.println(money2);
            
        }
        else if(type==1)
        {

            if(money<=16700)
            money2=(float) (0.1*money);
            else if(money<=67900)
                money2=(float) (1670+0.15*(money-16700));
            else if(money<=137050)
                money2=(float) (9350+0.25*(money-67900));
            else if(money<=208850)
               money2=(float) (0.28*(money-137050)+26637.5);
            else if(money<=372950)
                money2=(float) (0.33*(money-208850)+46741.5);
            else
                money2=(float) (0.35*(money-372950)+100894.5);
            System.out.println(money2);
        } 
        else if(type==2)   
        {
            if(money<=8350)
            money2=(float) (0.1*money);
            else if(money<=33950)
                money2=(float) (0.15*(money-8350)+835);
            else if(money<=68525)
                money2=(float) (0.25*(money-33950)+4675);
            else if(money<=104425)
                money2=(float) (0.28*(money-68525)+13318.75);
            else if(money<=186475)
                money2=(float) (0.33*(money-104425)+23370.75);
            else 
                money2=(float) (0.35*(money-186475)+50447.25);
            System.out.println(money2);
        }
        else if(type==3)
        {
            if(money<=11950)
            money2=(float) (0.1*money);
            else if(money<=45500)
                money2=(float) (0.15*(money-11950)+1195);
            else if(money<=117450)
                money2=(float) (0.25*(money-45500)+6227.5);
            else if(money<=190200)
                money2=(float) (0.28*(money-117450)+24215);
            else if(money<=372950)
                money2=(float) (0.33*(money-190200)+44585);
            else
                money2=(float) (0.35*(money-372950)+104892.5);
            System.out.println(money2);
        }
        else
        {
            System.out.println("Wrong Format");
        }
        }
        else
            System.out.println("Wrong Format");
    }
    
}

 

第四题仍然是对于if语句的判断,题型较为基本,更多的是编程时的耐心,才能更好的解出这个题目

  • 第五题
 1 import java.util.*;
 2 public class Main{
 3      public static void main(){
 4      Scanner reader = new Scanner(System.in);
 5      float x = reader.nextFloat();
 6        int a = (int)x/10;            
 7        int b = ((int)x%10)/5;         
 8        int c= ((int)x%10)-5;          
 9      
10        float d= x%1*100;              
11        int e = (int)d/50;             
12        int f = ((int)d%50)/10;        
13        int g = ((int)d%50)%10/2;     
14        int h= 2*g%2;         
15        
16        System.out.println(a+ "张十元");
17        System.out.println(b+ "张五元");
18        System.out.println(c+ "张一元");
19        System.out.println(e+"个五角");
20        System.out.println(f+"个一角"); 
21        System.out.println(g+"个贰分");
22        System.out.println(h+"个壹分"); 
23        }
24 }

第五题是考察我们对于JAVA语言的简单运算符号,很像C语言的大马与小马分配的遍历问题,没有什么难度,题型较为基本,所有测试点全部通过

  • 第六题

 

 1 import java.util.Scanner;
 2 public class Main {  
 3 public static void main(String[] args) {
 4         Scanner input = new Scanner(System.in);
 5         int num = input.nextInt();
 6         int a[]=new int [num];
 7         for (int i = 0; i < num; i++) {
 8             a[i]= input.nextInt();
 9         }
10         for (int i = 0; i < num; i++) {
11             for (int j = 0; j < num-1-i; j++) {
12                 if(a[j]>a[j+1]){
13                     int temp = a[j];
14                     a[j] = a[j+1];
15                     a[j+1] = temp;
16                 }
17             }
18         }
19     System.out.print("The sorted numbers are:");  //不换行
20        for(int i=0;i<a.length;i++){
21            
22                 System.out.print(a[i]+" ");
23             }
24         
25     }
26 }

 

第六题,考察了JAVA中的数组的定义,同时也考察了一个算法,选择排序,将一个一维数组进行排序后输出,本题的测试点格式要进行格式化输出,排序的选择排序我们在C语言中已经学会,这个题的测试点全部通过

  • 最后一题

 

 1 import java.util.Arrays;
 2 import java.util.Scanner;
 3 
 4 public class Main {
 5 
 6     public static void main(String[] args) {
 7         Scanner in=new Scanner(System.in);
 8         double num[] = new double[3];
 9         int i=0;
10         for(i = 0; i < 3; i++){
11             num[i] = in.nextDouble();
12         }
13         for(i = 0; i < 3; i++){
14             if(num[i] < 1 || num[i] > 200){
15                 System.out.println("Wrong Format");
16                 return;
17             }
18         }
19         Arrays.sort(num);
20         if(num[0] + num[1] > num[2]){
21             if(num[0] == num[1] && num[1] == num[2]){
22                 System.out.println("Equilateral triangle");
23             }
24             else if(num[0] == num[1] && num[0] * num[0] + num[1] * num[1] - num[2] * num[2] < 0.0000000001)
25                 System.out.println("Isosceles right-angled triangle");
26             else if(num[2] == num[1] || num[2] == num[0] || num[0] == num[1]){
27                 
28                 
29                 System.out.println("Isosceles triangle");
30             }
31             else if(num[0] * num[0] + num[1] * num[1] - num[2] * num[2] < 0.0000010){
32                 
33                 
34                 System.out.println("Right-angled triangle");
35             }
36             else{
37                 
38                 
39                 
40                 System.out.println("General triangle");
41             }
42             
43         }
44         else
45             System.out.println("Not a triangle");
46     }
47     
48 }

 

最后一题在做的时候,有一些测试点没有过去:

原因有如下;

  1. 所有三角形是否考虑进去
  2. 有一些三角形是包含一些三角形,else if 的先后顺序,可以大大减少判断的次数
  3. 在判断直角三角型的精度问题,怎样准确的判断一个三角形是不是直角三角形也涉及到了一个测试点能否过去

最后写这个题目的心得:

    习题集一的题目相对简单,更多的是考察我们对Java基本语法知识的掌握,让我们从C语言的编程思维转化到Java的编程思维,通过本次的作业,掌握了Java基本的输入与输出,Java的一位数组的定义,遍历,以及对于选择排序对于一维数组的处理,if 以及 else if 语句的嵌套使用,第一次的题目集很好的让我们走进了Java编程学习的第一步,夯实了我的基础语法知识,只有掌握好这些基本的语法知识,才能在今后的学习中做出更难得题目。

 

JAVA第一次习题集-设计与分析

原文:https://www.cnblogs.com/lyhzml/p/14613691.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!