想用结构体写一个排行榜

该如何实现当输入的得分高于前十时,可以输入玩家名字,低于前十时,就无反应的要求?

#define MAXTITL 100
#define MAXAUTL 100
#define N 2
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;

struct Charts
{
    int score;
    char name[20];
}player[N],t;
int main()
{
    int i, j;
    for (i = 0; i < N; i++)
    {
        scanf_s("%d%s", &player[i].score, player[i].name.20);
        fflush(stdin);
    }
    for (i = 0; i < N - 1; i++)
    {
        for (j = 0; j < N - 1 - i; j++)
        {
            if (player[j].score > player[j + 1].score)
            {
                t = player[j];
                player[j] = player[j + 1];
                player[j + 1] = t;
            }
        }
    };
    for (i = 0; i < N; i++)
    {
        printf("%d\n,player[i].score");
        printf("%s\t,player[i].name");
    };
    return 0;
};

scanf_s("%d%s", &player[i].score, &player[i].name);
scanf_s格式化字符串时,必须指定字符串的允许长度,另外字符串输入时,不需要写&符号取地址,因为它本身就是个地址
scanf_s("%d%s", &player[i].score, player[i].name,20);

你的代码比较奇怪,第一个for循环都已经完成所有人信息输入了,第二个排序的循环为啥还要输入名字,而且在每次交换顺序的时候输入呢?不对的啊

#define MAXTITL 100
#define MAXAUTL 100
#define N 2
#include<iostream>
//#include<stdio.h>
#include<string>
using namespace std;
struct Charts
{
    int score;
    char name[20];
}player[N],t;

int main()
{
    int i, j;
    for (i = 0; i < N; i++)
    {
        cin >> player[i].score >> player[i].name;
        //scanf_s("%d%s", &player[i].score, player[i].name.20); 直接cin不好么
        fflush(stdin);
    }
    for (i = 0; i < N - 1; i++)
    {
        for (j = 0; j < N - 1 - i; j++)
        {
            if (player[j].score < player[j + 1].score)//if (player[j].score > player[j + 1].score) 从大到小排序
            {
                t = player[j];
                player[j] = player[j + 1];
                player[j + 1] = t;
            }
        }
    };
    for (i = 0; i < N; i++)
    {
        //printf("%d\t",player[i].score);//printf("%d\n,player[i].score"); 引号错误下同
        //printf("%s\n",player[i].name);//printf("%s\t,player[i].name");
        //上面2句也可修改为
        cout <<player[i].score <<"\t" <<player[i].name <<endl;
    };
    
    
    return 0;
};

输入数据时自动排序,代码修改如下:如有帮助,请采纳一下。

#define MAXTITL 100
#define MAXAUTL 100
#define N 12
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
struct Charts
{
    int score;
    char name[20];
}player[N],t;
int main()
{
    int i, j,t;
    Charts st;
    for (i = 0; i < N; i++)
    {
        memset(&st,0,sizeof(st));
        printf("请输入选手%d的得分:",i+1);
        scanf("%d",&st.score);

        //将得分插入数组
        for (j=0;j<i;j++)
        {
            if(st.score > player[j].score)
            {
                for (t = i;t >j;t--)
                {
                    player[t] = player[t-1];
                }
                player[j] = st;
                break;
            }
        }
        if(j<10)
        {
            printf("请输入选手%d的姓名:",i+1);
            scanf("%s",player[j].name);
        }
        fflush(stdin);
    }

    /* //这个排序就不需要了
    for (i = 0; i < N - 1; i++)
    {
        for (j = 0; j < N - 1 - i; j++)
        {
            if (player[j].score > player[j + 1].score)
            {
                t = player[j];
                player[j] = player[j + 1];
                player[j + 1] = t;
            }
        }
    };*/
    for (i = 0; i < N; i++)
    {
        printf("%s\t",player[i].name);
        printf("%d\n",player[i].score);
        
    };
    return 0;
};