100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 输入4个同学的姓名学号 语文数学英语信息计算平均成绩 按平均成绩高低排序输出java

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

时间:2022-09-06 22:39:09

相关推荐

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

题目:

/*

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

*/

代码部分:

C++实现

#include<iostream>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<stu[j+1].ave){stemp=stu[j];//结构体替换stu[j]=stu[j+1];stu[j+1]=stemp;//cout<<stu[4].name<<" "<<stu[4].num<<" "<<stu[4].ch<<" "<<stu[4].math<<" "<<stu[4].en<<endl;}}}cout<<"平均成绩由高到低排序为:"<<endl;for(int a=0;a<4;a++){cout<<stu[a].name<<" "<<stu[a].num<<" "<<stu[a].ch<<" "<<stu[a].math<<" "<<stu[a].en<<endl;}return 0;}

运行结果:

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<Student> listStu = new ArrayList<Student>();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<listStu.get(j+1).ave){listStu.get(4)=listStu.get(j); //结构体替换 stu[j]=stu[j+1]; stu[j+1]=stu[4];}System.out.println(stu[4].name);System.out.print(stu[4].en); } }}*///创建一个学生类class Student{String name;String num;int ch;//语文int math;//数学int en;//英语double ave;//平均成绩//重写输出public String toString(){return "Student[name="+name+", num="+num+", ch="+ch+", math="+math+", en="+en+"]";}}

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。