计算规则:
分数 | 绩点 |
60-100 | 1.0-5.0 |
0-59 | 0 |
平均学分绩点=(∑(已修读课程绩点×课程学分))/(∑已修读课程学分);
Java:
package Test;
//GpaCalculator.java
import java.util.*;
public class GpaCalculator{
public static void main(String[]args){
Scanner s = new Scanner(System.in);
System.out.println("********************************");
System.out.println(" 绩点计算器 ");
System.out.println("********************************");
while(true) {//进入计算器系统,每次进入都要重新定义以下变量
int n = 1;//第n门科目
double allCredit = 0;//总学分
double averageGpa = 0;//平均绩点
int count90 = 0; //统计90分以上科目
int count85 = 0; //统计85-89分以上科目
int count0 = 0; //统计60分以下科目
System.out.print("请输入本次计算绩点的科目数量: ");
int num = s.nextInt();
double credit[] = new double[num];//单科学分
double score[] = new double[num]; //分数
double gpa[] = new double[num]; //单科绩点
while (true) {//开始输入
System.out.print("请输入第" + n + "科课程的分数和学分: ");
score[n-1] = s.nextDouble();//成绩
credit[n-1] = s.nextDouble();//学分
//输入成绩不合法时,让用户重新输入合法成绩
if(score[n-1]<0|score[n-1]>100) {
System.out.println("成绩输入有误,请重新输入分数和学分");
continue;
}
//统计成绩
if (score[n-1]>=90){//统计90分以上科目
count90++;
}else if(score[n-1]>=85){//统计85-89分以上科目
count85++;
}
//计算绩点
if (score[n-1]<60){//统计60分以下科目并计该科绩点为0
gpa[n-1]=0;
count0++;
}else{
gpa [n-1]= (score[n-1] - 60)/10 + 1;//绩点
}
//计算总学分
allCredit += credit[n-1];
if (n == num) {//如果已计算科目=全部科目退出循环
break;
}
n++;
}
//计算平均绩点
for(int i=0;i<num;i++) {
averageGpa += gpa[i]*credit[i]/allCredit;
}
//输出成绩报告
System.out.println('\n'+"成绩报告:");
System.out.println("这" + num + "门课的平均绩点为:" + String.format("%.2f" ,averageGpa));
System.out.println("其中,90分以上共有" + count90 + "门课");
System.out.println(" 85至89分共有" + count85 + "门课");
System.out.println(" 60分以下共有" + count0 + "门课");
System.out.println("共修学分" + allCredit);
//选择继续使用或退出系统
System.out.println('\n'+"退出程序请按0,按其余数字继续使用");
int button = s.nextInt();
if (button==0){
System.out.println("已退出程序");
break;
}
}
}
}
C:
#include<iostream>
#include <iomanip>
using namespace std;
int num;//计算科目数量
double credit[100];//单科学分
double score[100]; //分数
double gpa[100]; //单科绩点
//成绩报告
void result(int num,double averageGpa,int count90,int count85,int count0,double allCredit){
cout<<endl<<"成绩报告:"<<endl;
cout<<"这"<<num<<"门课的平均绩点为:"<<setiosflags(ios::fixed)<<setprecision(2)<<averageGpa<<endl;
cout<<"其中,90分以上共有"<<count90<<"门课"<<endl;
cout<<" 85至89分共有"<<count85<<"门课"<<endl;
cout<<" 60分以下共有"<<count0<<"门课"<<endl;
cout<<"共修学分"<<allCredit<<endl;
}
//计算部分
void calculation(){
while(1){//进入计算器系统,每次进入都要重新定义以下变量
int n = 1;//第n门科目
double allCredit = 0;//总学分
double averageGpa = 0;//平均绩点
int count90 = 0; //统计90分以上科目
int count85 = 0; //统计85-89分以上科目
int count0 = 0; //统计60分以下科目
cout<<"请输入本次计算绩点的科目数量: ";
cin>>num;
while(1){
cout<<"请输入第"<<n<<"科课程的分数和学分: ";
cin>>score[n-1]; //成绩
cin>>credit[n-1];//学分
//输入成绩不合法时,让用户重新输入合法成绩
if(score[n-1]<0|score[n-1]>100) {
System.out.println("成绩输入有误,请重新输入分数和学分");
continue;
}
//统计成绩
if (score[n-1]>=90)//统计90分以上科目
count90++;
else if(score[n-1]>=85)//统计85-89分以上科目
count85++;
//计算绩点
if (score[n-1]<60){//统计60分以下科目并计该科绩点为0
gpa[n-1]=0;
count0++;
}else
gpa [n-1]= (score[n-1] - 60)/10 + 1;//绩点
//计算总学分
allCredit += credit[n-1];
if (n == num) //如果已计算科目=全部科目退出循环
break;
n++;
}
//计算平均绩点
for(int i=0;i<num;i++)
averageGpa += gpa[i]*credit[i]/allCredit;
result(num,averageGpa,count90,count85,count0,allCredit);//成绩报告
//是否退出系统
cout<<"退出程序请按0,按其余数字继续使用"<<endl;
int button;
cin>>button;
if (button==0){
cout<<"已退出程序"<<endl;
break;
}
}
}
int main(){
cout<<"********************************"<<endl;
cout<<" 绩点计算器 "<<endl;
cout<<"********************************"<<endl;
calculation();
return 0;
}
运行结果: