华为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);
}
}
------解决方案--------------------排好顺序取数据。