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

图片说明

//同分怎么办?怎么排名?
#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;

}

c++

1个回答

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;
        }
}
DarkmoonYZW
DarkmoonYZW ”&& 第二条件前者大于后者“能详细说明一下吗,谢谢
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

1
【C语言】结构体数组作为函数参数的排序问题
3
c语言 超级菜的小白请问怎么通过结构体数组中元素将结构体排序?
1
输入m个学生和n门科目,计算并打印每个学生各门科目的总分和平均分 。下列代码哪里错了求大佬T^T
1
来个大牛写SQL语句 3张表联合查询(今天笔试遇到的)
2
php Array ( [0] => 班主任名称 [1] => 班级名称)这样各式的数组变成 array('Hello','World!');怎么弄
0
数据结构对于棋盘的一个分割子的算法的问题,运用C语言技术的编程实现
0
用正整数表示的积分规则,计算总分的问题,采用C编程语言如何解决
1
各位大神帮帮忙,这段代码中为什么求总分、平均分和排序会出现错误的(非常紧急)
1
求助C语言的猜数字游戏
1
学弱求助C语言猜数字游戏
4
怎么把int数组改成double数组类型
0
C语言来计算,需要把棋盘按上述规则分割成n块矩形棋盘,并使各矩形棋盘总分的均方差最小。
1
编程小白跪求大神解答
0
棋盘分割的计算四舍五入精确到小数点后三位,怎么采用C程序的语言代码编写技术的办法去实现呢?
0
以随机顺序逐点打分计算总分的范围,用C语言的程序编写代码的形式去解决的做法
3
C语言统计学生信息,超简单的一个问题
2
请问error LNK2019 和fatal error LNK1120该怎么解决啊
2
大一c++算法类作业问题
2
jsp:forward param子标记 java web
4
请问如何把单独把每个input取到值 然后加起来放到总分处?