输入4个同学的姓名学号,语文数学英语信息计算平均成绩,按平均成绩高低排序输出java,c++实现

题目:

/*
   输入4个同学的姓名学号,语文数学英语信息计算平均成绩,按平均成绩高低排序输出
*/

代码部分:

C++实现

#include
using namespace std;

struct student{
	char name[50];	//char接收是一个字符
	char num[50];
	int ch;				//语文
	int math;			//数学
	int en;				//英语
	double ave;		//平均成绩
};

int main(){
	student stu[4];
	student stemp;
	for(int i=0;i<4;i++){
		cin>>stu[i].name>>stu[i].num>>stu[i].ch>>stu[i].math>>stu[i].en;
		stu[i].ave=(stu[i].ch+stu[i].math+stu[i].en)/3;
	}

	//冒泡排序
	for(int k=0;k<3;k++){
		for(int j=0;j<3-k;j++){
			if(stu[j].ave

运行结果:

输入4个同学的姓名学号,语文数学英语信息计算平均成绩,按平均成绩高低排序输出java,c++实现_第1张图片

java实现

          小总结:之前一直想着用C++的思路,就java里的类相当于C++里的结构体,然后我就想直接像C++里一样,直接实例化的时候弄成Student[] stu = new Student[6]这个样子,一个数组,但是数组类型为student类,发现是可以实例化的,但是它一直报stu[i] is null,就存不进去数据。在网上找了很多,这样是可以实现,但是感觉麻烦和结构不分明。然后我就想到了list集合,里面装的类型为student不就好了。

package CSDNTest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class AverageScore {
	
	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner(System.in);
		System.out.print("人数为:");
		int n = sc.nextInt();
		System.out.print("输入姓名,编号,语文,数学,英语:");
		
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		
		List listStu = new ArrayList();
		
		while (n>0) { 			//有n个学生
	        String[] s=br.readLine().split(" ");//用空格隔开所输入的数据
	        
	        int c=Integer.parseInt(s[2]);
	        int m=Integer.parseInt(s[3]);
	        int e=Integer.parseInt(s[4]);
	        int a=(c+m+e)/3;
	        Student stu =new Student();
	        stu.name = s[0];
	        stu.num = s[1];
	        stu.ch = c;
	        stu.math = m;
	        stu.en = e;
	        stu.ave = a;
	        listStu.add(stu);
	        
	        if (n>1) {
	        	System.out.print("输入姓名,编号,语文,数学,英语:");
	        }
	        n--;
		}
		/*
		System.out.print("结果1:"+listStu.get(0).ave);
		Collections.swap(listStu, 0, 1);
		System.out.print("结果:"+listStu.get(0).ave);
		*/
		
		//冒泡排序
		int i, j;
		for (j = 0; j < listStu.size() - 1; j++)
		{
			for (i = 0; i < listStu.size() - 1 - j; i++)
			if (listStu.get(i).ave < listStu.get(i+1).ave)
			{
				Collections.swap(listStu, i, i+1);//list是属于collection的,这个方法就是交换
			}
		}
		
		for (i = 0; i < listStu.size(); i++) {
			System.out.println(listStu.get(i));
		}

	}
}
		
		//之前的思路
	  /*for(int k=0;k<4;k++){ 
		  for(int j=0;j<4-k;j++){ 
			  if(listStu.get(j).ave

输入4个同学的姓名学号,语文数学英语信息计算平均成绩,按平均成绩高低排序输出java,c++实现_第2张图片

你可能感兴趣的:(c++,算法上机,java,算法,c++,java)