10.24java作业

java 和 c++有很多重复的地方,感觉比较方便

15.n个数组在数组a中,将数据从小到大排列,插入x使数据依旧从小到大排列。
package ttt;
import java.util.Scanner;
public class rr {
  public static int num=10;
  public static void printA(double []arr)
  {
    for(double i:arr)
    System.out.print(i+" ");
    System.out.println("");
  }
   public static int find(double []arr,double x)//找到x前面的数然后插在它后面
  {
    int pos=-1;
    for(int i=0;i<arr.length;i++)
    if(arr[i]>x){pos=i-1;break;}
    return pos;
  }
    public static void sort(double []arr)
  {
    double temp=0;
    for(int i=0;i<num;i++)
    for(int j=i+1;j<num;j++)
    {
      if(arr[i]>arr[j])
      {
        temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
      }
      
    }
    
  }
  public static void insert(double []arr,double x)
  {
    int inpos=0;
    inpos=find(arr,x);
    int len=arr.length-1;
    while(len>inpos+1)
    {
      arr[len]=arr[len-1];
      len--;
      
    }
    arr[inpos+1]=x;
    num++;
    
  }
  public static void main(String [] args)
  {
    Scanner cin=new Scanner(System.in);
double[]arr=new double[20];
System.out.println("输入10个数");
    for(int i=0;i<arr.length/2;i++)
    arr[i]=cin.nextDouble();
    sort(arr);
double x;
System.out.println("输入要插入的数");
    x=cin.nextDouble();
insert(arr,x);
System.out.println("结果是");
    printA(arr);
    cin.close();
    
  }

}




16.20个学生,每个学生一学期有五门成绩,学校发给超出平均分10%学生二等奖,20%学生一等奖,请将他们的学号和姓名打印出来。

package hw;
import java.util.Scanner;
public class Test {
	public static class Student 
	{
		Student()
		{
			
		}
	     Student(Student k)
		{
	    	 for(int i=0;i<grade.length;i++)
	 			grade[i]=k.grade[i];
	 			totGra=k.totGra;
	 			id=k.id;
		}
		public double grade[]=new double[5];
		public  double totGra;
		public  String id;
		public String name;
		public  void getsum()//计算各科成绩和
		{
			totGra=0;
			for(int i=0;i<grade.length;i++)
				totGra+=grade[i];
		}
		public void show()//展示基本信息

		{
			System.out.println("学号:"+id+"姓名:"+name);
			System.out.println("各门课程成绩");
			for(int i=0;i<grade.length;i++)
				System.out.print(grade[i]+" ");
			System.out.print('\n');
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student arr[]=new Student[20];
		for(int i=0;i<arr.length;i++)
			arr[i]=new Student();
		Scanner cin=new Scanner(System.in);
		double sum=0;
		for(int i=0;i<arr.length;i++)
		{
System.out.println("输入学生的学号");
			arr[i].id=cin.next();
System.out.println("输入学生的姓名");
			arr[i].name=cin.next();
System.out.println("输入学生的5次成绩");
			for(int s=0;s<arr[i].grade.length;s++)
			{
				arr[i].grade[s]=cin.nextDouble();
			}
			arr[i].getsum();
			sum+=arr[i].totGra;
		}
		sum/=20;
		double second=sum*1.1,first=sum*1.2;
		System.out.println("二等奖获得者");
		for(int i=0;i<20;i++)
		{
		  
		  if(arr[i].totGra>=second)
		  arr[i].show();
		  
  }
  
			System.out.println("一等奖获得者");
		for(int i=0;i<20;i++)
		{
		  
		  if(arr[i].totGra>=first)
		  arr[i].show();
		  
  }
		cin.close();
	}
	 

}

17.体操运动员获得10次评分,去掉一个最低分和一个最高分后,将他们姓名排名各次评分打印出来。
package hw;
import java.util.Scanner;
public class Test {
 public static class joiner
	  {
	    joiner()
	    {
	    	
	    }
	    joiner(joiner k)
	    {
	      totgra=k.totgra;
	      name=k.name;
	      for(int i=0;i<score.length;i++)
	      k.score[i]=score[i];
	      
    }
	    public double score[]=new double[10];
	    public double totgra;
	    public String name;
	    public void getgra()
	    {
	      totgra=score[0];
	      double maxx=score[0],minn=maxx;
	      for(int i=1;i<score.length;i++)
	      {
	        totgra+=score[i];
	        if(maxx<score[i])
	        maxx=score[i];
	        if(minn>score[i])
	        minn=score[i];
       }
      totgra-=minn+maxx;
	      
     }
     public boolean compare(joiner B)//判断类之间大小关系
	    {
	      
	      if(totgra>B.totgra)return true;
	      
	      return false;
    }
    public  void show()//基本信息
    {
      
      System.out.println("得分情况");
      for(int i=0;i<score.length;i++)
      System.out.print(score[i]+" ");
      System.out.print("\n");
    }
  }
  public static void sort(joiner []ac)//冒泡排序
  {
    joiner three;
    for(int i=0;i<ac.length;i++)
    for(int j=i+1;j<ac.length;j++)
    {
      if(ac[i].compare(ac[j]))
      {
        three=ac[i];
        ac[i]=ac[j];
        ac[j]=three;
      }
      
    }
    
    
    
  }
  public static void main(String []args)
  {
    joiner [] joke=new joiner[20];
    for(int i=0;i<joke.length;i++)
    	joke[i]=new joiner();
Scanner cin=new Scanner(System.in);
	
    for(int i=0;i<joke.length;i++)
{
System.out.println("输入选手名字");
      joke[i].name=cin.next();
System.out.println("输入选手的10次成绩");
      for(int j=0;j<joke[i].score.length;j++)
      joke[i].score[j]=cin.nextDouble();
      joke[i].getgra();
    }
    sort(joke);
    for(int i=0;i<joke.length;i++){
     System.out.print("第"+(i+1)+"名 "+joke[i].name+" "+joke[i].totgra);
    joke[i].show();
    }
    
    cin.close();
  }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值