DarkmoonYZW 2019-10-19 08:25 采纳率: 100%
浏览 411
已采纳

当总分相同时怎么进行排名?

图片说明

//同分怎么办?怎么排名?
#include
#include
#include
#include
#include
using namespace std;
void main()
{
int q;
int d[30];
int k;
int vec1[30];//总分1,之后要排序的
int n,sum=0;
string course[] = { "MT","EN","PH" };//科目
int a[30];//学生编号
int c[30];//总分2,原件
double b;
cin >> n;
int v = n;
for (int i = 1; i <= n; i++)
a[i] = i;//学生编号

const int m = sizeof(a[30]);
double score[m][3];
for (int i = 1; i <= n; i++)
{
    for (int j = 0; j < 3; j++)
    {
        cout << a[i] << "号的" << course[j] << "成绩:" << endl;
        cin>>score[i][j];
    }
}
for (int i = 1; i <= n; i++)
{
    for (int j = 0; j < 3; j++)
    {
        sum += score[i][j];
    }
    vec1[i] = sum;
    c[i] = sum;
    cout <<a[i]<< "号总分:" << sum << endl <<a[i]<< "号平均分:" << sum / 3 << endl;
    sum = 0;

}
int temp = 0;
for (int i = n; i >=1; i--)
{
    for (int j = i - 1; j >=1; j--)
        if (vec1[i] > vec1[j])
        {
            temp = vec1[j];
            vec1[j] = vec1[i];
            vec1[i] = temp;

        }
}


cout << endl;
for (int i = 1; i <= v; i++)
{
    for (int j = 1; j <= n; j++)
    {
        if (c[j] == vec1[i])
        {
            cout << "第" << i << "名是:" << j << "号" << endl;
            d[j] = i;//第几号是第几名
        }
    }

}
cout << "学生编号" << '\t' << course[0] << '\t' << course[1] << '\t' << course[2] << '\t' << "总分" << '\t' << "平均分" << '\t' << "排名" << endl;
for (int i = 1; i <= n; i++)
{
    cout <<setw(8)<< i << '\t';
    for (int j = 0; j < 3; j++)
    {
        cout << score[i][j];
        cout << '\t';
    }
    cout << setw(4) << c[i] << '\t';
    cout << setw(6) << c[i] / 3 << '\t';
    cout << setw(4) << d[i] << endl;


}
cout << "请输入要查找的学号:";
bool o = false;
cin >> q;
for (int i = 1; i <= n; i++)
{
    if (q == a[i])
    {
        cout << "学生编号" << '\t' << course[0] << '\t' << course[1] << '\t' << course[2] << '\t' << "总分" << '\t' << "平均分" << '\t' << "排名" << endl;

            cout << setw(8) << i << '\t';
            for (int j = 0; j < 3; j++)
            {
                cout << score[i][j];
                cout << '\t';
            }
            cout << setw(4) << c[i] << '\t';
            cout << setw(6) << c[i] / 3 << '\t';
            cout << setw(4) << d[i] << endl;
            o = true;
    }


}
if (o == false)
    cout << "该学号不存在" << endl;

}

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-10-19 09:22
    关注
    for (int i = n; i >=1; i--)
    {
        for (int j = i - 1; j >=1; j--)
            if (vec1[i] > vec1[j]) || (vec1[i] == vec1[j] && 第二条件前者大于后者)
            {
    
                temp = vec1[j];
                vec1[j] = vec1[i];
                vec1[i] = temp;
            }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 我这模型写的不对吗?为什么lingo解出来的下面影子价格这一溜少一个变量
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波