1、请依次按如下要求完成程序
1)从键盘输入n个学生成绩,将其存放到数组a中,并输出数组a查看输入是否正确。其中n从键盘输入。
2)计算数组a中所有成绩的平均值,并输出。
3)对数组a中所有成绩进行从大到小排序。
4)将数组a中成绩大于平均值的存放到数组b中,并输出数组b中所有元素。
import java.util.*;
public class Test03 {
public static void main(String[] args) {
final Scanner scanner = new Scanner(System.in);
//读取学生总人数
System.out.println("请输入学生总数:");
final int number = scanner.nextInt();
//读取每个学生的成绩
final float[] scores = new float[number];
int index = 0;
while (index < number) {
scores[index] = scanner.nextFloat();
index++;
}
//打印每个学生的成绩
for (float item : scores) {
System.out.print(item);
System.out.print(" ");
}
System.out.println();
//计算成绩总和然后求平均值
float sum = 0;
for (float item : scores) {
sum += item;
}
final float avg = sum / number;
System.out.println("平均成绩:" + avg);
//冒泡排序法将数组排序,从大到小
float temp = 0;
for (int i = 0; i < scores.length - 1; i++) {
for (int j = 0; j < scores.length - i - 1; j++) {
if (scores[j] < scores[j + 1]) {
temp = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = temp;
}
}
}
for (float item : scores) {
System.out.print(item);
System.out.print(" ");
}
System.out.println();
//将超过平均数的成绩放入新数组,新数组的长度为总长度,但是有部分应该是未填充,只打印b_num位
int b_num = 0;
final float[] b = new float[number];
for (float item : scores) {
if (item > avg) {
b[b_num++] = item;
}
}
for (int i = 0; i < b_num; i++) {
System.out.print(b[i]);
System.out.print(" ");
}
}
}
这个哪里一言难尽啊
import java.util.Scanner;
public class Test {
public static void main(String args[]) {
//输入n个成绩,返回数组
int[] numArr = inputNumArr(5);
System.out.println("输入的成绩数组为:");
for(int i=0; i<numArr.length; i++) {
System.out.println(numArr[i]);
}
//计算平均值
double avg = calDouble(numArr);
System.out.println("平均成绩是:" + avg);
//排序
int[] sortNumArr = sortNumArr(numArr);
System.out.println("排序后的成绩数组为:");
for(int i=0; i<sortNumArr.length; i++) {
System.out.println(sortNumArr[i]);
}
//大于平均值成绩提取
int[] resultArr = getBigerAvg(numArr, avg);
System.out.println("大于平均值成绩的数组为:");
for(int i=0; i<resultArr.length; i++) {
if(resultArr[i] != 0) {
System.out.println(resultArr[i]);
}
}
}
public static int[] inputNumArr(int n) {
System.out.println("请输入"+n+"个成绩");
Scanner sc = new Scanner(System.in);
int[] numArr = new int[n];
for(int i=0; i<n; i++) {
numArr[i] = sc.nextInt();
}
return numArr;
}
public static double calDouble(int[] numArr) {
int sum = 0;
for(int i=0; i<numArr.length; i++) {
sum = sum + numArr[i];
}
return sum / numArr.length;
}
public static int[] sortNumArr(int[] numArr) {
int temp = 0;//用于交换的临时变量
for(int i = 0; i<numArr.length-1; i++){//外层循环用于排序排几轮
for(int j = 0; j<numArr.length-(1+i); j++) {//内层循环用于每一大轮中进行数据交换
if(numArr[j] > numArr[j+1]) {
//如果前面的数大于后面的,就进行交换
temp = numArr[j];
numArr[j] = numArr[j+1];
numArr[j+1] = temp;
}
}
}
return numArr;
}
public static int[] getBigerAvg(int[] numArr, double avg) {
int[] resultArr = new int[10];
int index = 0;
for(int i=0; i<numArr.length; i++) {
if(numArr[i] > avg) {
resultArr[index] = numArr[i];
index++;
}
}
return resultArr;
}
}
package QA;
//因为要用到输入输出,所以需要导入这个Scanner包。
import java.util.Scanner;
public class test1 {
public static void main(String[]args) {
/*因为要从键盘里输入n个学生的成绩,所以创建一个数组n,用来存放学生的成绩,创建数组时,数组的容量也就是n应该是已知的,否则会出错,所以要先用键盘接收n的大小*/
/*----------------------------------第(1)问--------------------------------------------------*/
Scanner sc=new Scanner(System.in);
int n=sc.nextInt(); //n为学生的个数,所以n为整数
//创建数组a存放学生成绩,创建浮点数数组,因为学生的成绩可能有小数
float []a=new float[n];
for(int i=0;i<n;i++) {
a[i]=sc.nextFloat();
}
//输出数组a查看输入是否正确
for(int i=0;i<n;i++) {
System.out.print(a[i]+" ");
}
/*----------------------------------第(2)问--------------------------------------------------*/
//计算数组中所有成绩的平均值,并输出,就是把数组中所有成绩累加求和,然后除以学生数
//用for循环累计求和求出学生的成绩总数,定义sum变量接收成绩总数,定义avg存放平均数
float sum=0,avg=0;
for(int i=0;i<n;i++) {
sum+=a[i];
}
avg=sum/n;
System.out.println("\n学生的平均成绩为:"+avg);
/*----------------------------------第(3)问--------------------------------------------------*/
//对数组中所有成绩进行从大到小排序用冒泡排序法,就是把小的放后面,大的放前面,运用双重循环来实现,把数组中的每个数字都和它后面的数字比较大小,
//如果前面的数比后面的数大,就用临时变量交换掉
for(int i=0;i<n-1;i++) {
for(int j=i+1;j<n;j++) {
if(a[i]<=a[j]) {
float temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
/*----------------------------------第(4)问--------------------------------------------------*/
//将数组a中成绩大于平均值的存放到数组b中,并输出数组b中的所有元素
int count=0;
for(int i=0;i<n;i++) {
if(a[i]>avg) {
count+=1;
}
}
float []b= new float [count];
for(int i=0;i<count;i++) {
b[i]=a[i];
}
for(int i=0;i<count;i++) {
System.out.print(b[i]+" ");
}
}
}