日期:2014-05-20  浏览次数:20785 次

华为2014机试求大神帮忙,本人刚开始学,求指点
初级题:从考试成绩中划出及格线?
10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:
(1)?及格线是10的倍数;
(2)?保证至少有60%的学生及格;
(3)?如果所有的学生都高于60分,则及格线为60分


以下是我在这个木鱼脑袋的想法,求帮助
public class We 
{

public static void main (String [] args)
{
int [] arr={1,12,56,76,67,67,55,55,77,20};
bubblesort(arr);

}
public static void bubblesort (int[] arr)
{  

if (arr[0]>60 && arr[1]>60&&arr[2]>60&&arr[3]>60&&arr[4]>60&&arr[5]>60&&arr[6]>60&&arr[7]>60&&arr[8]>60&&arr[9]>60==true);
{System.out.println("jige =60");}


for(int a=0;a<arr.length-1;a++)
{
for(int b=0;b<arr.length-a-1;b++)
{
if(arr[b]<arr[b+1])
{
int  temp=arr[b];
arr[b]=arr[b+1];
arr[b+1]=temp;
}
}

}
int  jige =arr[5]/10*10;
System.out.println("jige="+jige);


   
}

}
思路   将输入数据从低到高排序,取小于第4个数据的10的倍数作为及格线
------解决方案--------------------
10个学生的成绩是输入还是直接赋值啊?
你那么多的>,还不如循环呢?
------解决方案--------------------
import java.util.Scanner;
public class Main {
 public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int k=0;
        int[] array=new int[10];
        int jige;
        boolean isAllpass=true;
        while (in.hasNext()) {
        array[k]=in.nextInt();
        k++;
        if(k==10)
        {
         break;
        }
        } 
        for (int i : array) {
if(i<60){
isAllpass=false;
break;
}
}
        if(!isAllpass){
            int temp=0;  
            for(int i=0;i<array.length-1;i++){  
                for(int j=0;j<array.length-1-i;j++){  
                if(array[j]>array[j+1]){  
                    temp=array[j];  
                    array[j]=array[j+1];  
                    array[j+1]=temp;  
                }  
                }  
            }
            jige = array[4]/10*10;
            
        }else {
   jige =60;
}
       System.out.println(jige);
    }
}

------解决方案--------------------
排好顺序取数据。