10.1作业

来源:互联网 发布:unity3d 高通arapi 编辑:程序博客网 时间:2024/05/16 18:10
1.考试成绩已经保存在数组scores中,依次为 89,23,64,91,119,52,73,-23


  要求根据通过自定义方法来找出其中前三名,将数组成绩作为参数传入

  要求判断成绩的有效性(0-100),如果成绩无效,则忽略此成绩.

public class a {
public static void main(String[] args) {
//创建数组
int [] arr= {89,23,64,91,119,52,73,-23};
  //排序
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
               if(arr[i]>=0&&arr[i]<=100){
if(arr[i]<arr[j]){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
               }
               
               else 
                break;
}

}
//创建循环输出前三

for(int i=0;i<3;i++){
System.out.println(arr[i]);

}
}
}

2. 用数组来实现, 定义并初始化一个(1--100)保存100个数的数组,从第一个元素开始,依次数(1,2,3 循环往复),每次数到到3的元素淘汰掉.当到达数组
末尾的时候再从头开始,直到最后剩余一个元素,写出算法,并输出最后保留的元素所在的最初的位置.

public class a2 {
public static void main(String[] args) {
int [] arr = new int [100];
for (int i = 0;i<100;i++){
arr[i]=i+1;}
int i= 0;//下标
int times = 0;//计数
int over= 0;//记录淘汰位置
int num = 0;//记录循环次数
while(times!=100){
if(arr[i]>=0){
if(num==2){
arr[i]=-1;
times++;
num=0;
over=i;
System.out.println(over);

}else{
num++;

}
}
i++;
if(i==100){
i=0;
}
System.out.println(+over);
}


}

}

3. 用数组来实现对于一个整形数组, 分别通过冒泡排序和 快速排序,实现对于任意一个数组进行由小到大的排列。

//冒泡排序
public class a31 {
public static void main(String[] args) {
int [] arr ={25,23,69,57,51,13,77};
//导入第三方变量
int temp=0;
//方法置换
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;


}

}

System.out.println(arr[i]);

}
}
}

//快速排序
public class a32 {
public static void main(String[] args) {
    //声明数组
    int[] nums = {25,23,69,57,51,13,77};
    //应用快速排序方法
    quickSort(nums, 0, nums.length-1);
    //显示排序后的数组
    for(int i = 0; i < nums.length; ++i) {
      System.out.print(nums[i] + ",");
    }
    System.out.println("");
}


/**快速排序方法*/
public static void quickSort(int[] a, int lo0, int hi0) {
    int lo = lo0;
    int hi = hi0;


    if (lo >= hi)
      return;


    //确定指针方向的逻辑变量
    boolean transfer=true;


    while (lo != hi) {
      if (a[lo] > a[hi]) {
        //交换数字
        int temp = a[lo];
        a[lo] = a[hi];
        a[hi] = temp;
        //决定下标移动,还是上标移动
        transfer = (transfer == true) ? false : true;
      }


      //将指针向前或者向后移动
      if(transfer)
        hi--;
      else
        lo++;


      //显示每一次指针移动的数组数字的变化
      /*for(int i = 0; i < a.length; ++i) {
        System.out.print(a[i] + ",");
      }
      System.out.print(" (lo,hi) = " + "(" + lo + "," + hi + ")");
      System.out.println("");*/
    }


    //将数组分开两半,确定每个数字的正确位置
    lo--;
    hi++;
    quickSort(a, lo0, lo);
    quickSort(a, hi, hi0);
}
}

4.判断101-200之间有多少个素数,并输出所有素数。

public class a4 {
public static void main(String[] args) {
int x;
int times= 0;//计数
//判定是否素数
for(int i =101;i<201;i++){


for(x =2;x<i;x++){
if(i%x==0){
break;
}

}
//是素数计数+1
if (x==i){

times++;

System.out.println(i);}


}

System.out.println(times);}
}



5.题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

import java.util.Scanner;
//导包


public class a5 {
public static void main(String[] args) {
int letter=0;
int blank=0;
int dig=0;
int others = 0;
//键盘录入
Scanner sc = new Scanner(System.in); 
System.out.println("请输入字符串:");
String arr =sc.nextLine();
//字符串转换为数组
char[]ch=arr.toCharArray();
//方法判定
for(int i = 0;i<arr.length();i++){
if(Character.isLetter(ch[i])){
letter++; }
else if(Character.isSpaceChar(ch[i])){
         blank++;}
   else if(Character.isDigit(ch[i])){
          dig++;
         }
   else {
   others++;
   }
  System.out.println("字母的个数:"+letter);
  System.out.println("空格的个数:"+blank);
  System.out.println("数字的个数:"+dig);
  System.out.println("其他字符的个数:"+others);



}
}

6.题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,
高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,
高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润,求应发放奖金总数?

import java.util.Scanner;




public class a6 {

public static void main(String[] args) { 
double nums=0;
      Scanner sc= new Scanner(System.in);
      System.out.println("输入当月利润:");
      double  i= sc.nextInt();
      if(i<=10){
       nums=i*0.1;}
      else if(10<i&&i<=20){
       nums=1+(i-10)*0.075; }
      else if (20<i&&i<=40){
       nums=1.75+(i-20)*0.05;}
      else if(40<i&&i<=60){
       nums=2.75+(i-40)*0.03;
      }
      else if (60<i&&i<=100){
       nums=3.35+(i-60)*0.015;
      }
      else if(i>100){
       nums=3.95+(i-100)*0.01;
      }
      System.out.println("应发放奖金总数为:"+nums);
}
}

7.分别定义用户类,订单类,产品类,其中订单类至少要具有下订单的行为(入参为一个产品名称),
  产品类中至少有一个成员变量为产品名称,至少有一个方法用来获取产品的名称。
  用户类中持有一个产品类型的成员变量。
  用户类中持有一个订单类型的成员变量。
  
  在我们的用户类中定义main函数,当执行的时候,构造一个用户类的对象,
  并且通过手段可以拿到产品成员变量中的产品名称,并且调用成员变量订单的对象,进行下单。
  最后输出下单成功。

import java.util.Scanner;




 public class User {
Product product=new Product();
Oder oder=new Oder();


public static void main(String[] args) {
User user=new User();
user.product.getInputName();
user.oder.getOder();
}
}
class Product{
String productName;
public String getInputName(){
Scanner sc=new Scanner(System.in);
System.out.println(" 输入商品名称:");
productName=sc.next();
return productName;
}


}
class Oder{
String oderName;
void getOder(){
System.out.println("下单成功");
}
}