二維陣列和函式綜合程式設計練習

歸家Com發表於2018-11-30

《java》學生成績統計從鍵盤輸入一個班(全班最多不超過30人)學生某門課的成績,當輸入成績為負值時,輸入結束,分別實現下列功能:

.學生成績統計
從鍵盤輸入一個班(全班最多不超過30人)學生某門課的成績,當輸入成績為負值時,輸入結束,分別實現下列功能:
(1)統計不及格人數並列印不及格學生名單;
(2)統計成績在全班平均分及平均分之上的學生人數,並列印這些學生的名單;
(3)統計各分數段的學生人數及所佔的百分比。
第2學期第2次實驗
二維陣列和函式綜合程式設計練習
1.成績排名次
某班期末考試科目為數學(MT)、英語(EN)和物理(PH),有最多不超過30人蔘加考試。考試後要求:
(1)計算每個學生的總分和平均分;
(2)按總分成績由高到低排出成績的名次;
(3)列印出名次表,表格內包括學生編號、各科分數、總分和平均分;
(4)任意輸入一個學號,能夠查詢出該學生在班級中的排名及其考試分數。
【思考題】 請讀者思考如下問題。
① 如果增加一個要求:要求按照學生的學號由小到大對學號、成績等資訊進行排序,那麼程式如何修改呢?
② 如果要求程式執行後先列印出一個選單,提示使用者選擇:成績錄入、成績排序、成績查詢,在選擇某項功能後執行相應的操作,那麼程式如何修改呢?

import java.util.Scanner;

public class task {
double score[][]=new double[30][3];
double stuNum;
int sno[]=new int[30];
int rank[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29};
double sum[]=new double[30];
double aver[]=new double[30];
//設定學號和各科成績
public void setSonAndScore()
{
System.out.println(“Enter No. and score as: MT EN PH”);
Scanner input=new Scanner(System.in);
for(int i=0;i<stuNum;i++)
{
sno[i]=input.nextInt();
for(int j=0;j<3;j++)
{
score[i][j]=input.nextDouble();
}
}
}
//設定學生人數
public void setStuNum()
{
System.out.println(“Please enter the total number of the students(n<=30):”);
Scanner input=new Scanner(System.in);
this.stuNum=input.nextDouble();
}
//計算總分
public void setSum()
{
for(int i=0;i<stuNum;i++)
{
this.sum[i]=score[i][1]+score[i][2]+score[i][0];
}
}
//計算平均分
public void setAver()
{
for(int i=0;i<stuNum;i++)
{
this.aver[i]= sum[i]/3.0;
}
}
//計算排名
public void ranking()
{
double forRank[]=new double[30];
forRank= sum;
for(int i=0;i<stuNum-1;i++)
{
for(int j=0;j<=stuNum-i-1;j++)
{
if(forRank[j]<forRank[j+1])
{
double temp=forRank[j];
forRank[j]=forRank[j+1];
forRank[j+1]=temp;
int temp2;
temp2=rank[j];
rank[j]=rank[j+1];
rank[j+1]=temp2;
}
}
}
}
//查詢
public void query()
{
int pos;
System.out.println(“Please enter searching number:”);
Scanner input=new Scanner(System.in);
int tSno=input.nextInt();
System.out.println(“position NO MT EN PH SUM AVER”);
System.out.println("----------------------------------------------");
for(pos=0;pos<stuNum;++pos)
{
if(sno[pos]==tSno)
break;
}
for (int k=0;k<stuNum;k++)
{
if (rank[k]==pos)
{
System.out.print(++k);
System.out.print(" “);
System.out.print(sno[rank[k]]);
System.out.print(” “);
for(int j=0;j<3;j++)
{
System.out.print(score[rank[k]][j]);
System.out.print(” “);
}
System.out.print(sum[rank[k]]+” “+ aver[rank[k]]);
System.out.println(”");
}
}
}
//列印排名
public void print()
{
System.out.println(“NO MT EN PH SUM AVER”);
System.out.println("-------------------------------------------");
for(int i=0;i<stuNum;i++)
{
System.out.print(sno[rank[i]]);
System.out.print(" “);
for(int j=0;j<3;j++)
{
System.out.print(score[rank[i]][j]);
System.out.print(” “);
}
System.out.print(sum[rank[i]]+” “+ aver[rank[i]]);
System.out.println(”");
}
}
public static void main(String args[])
{
task t=new task();
t.setStuNum();
t.setSonAndScore();
t.setSum();
t.setAver();
System.out.println(“Before sort”);
t.print();
System.out.println(“After sort:”);
t.ranking();
t.print();
t.query();
}
}

本部落格轉自:https://blog.csdn.net/qq_41526054/article/details/84501564

相關文章