c语言问题 急求!!

2024-11-06 17:29:06
推荐回答(2个)
回答(1):

用二维数组,不太好,用结构体吧,然后用一维数组就可以了。

#include
#include 
struct student
{
    char szName[100];
    char szNo[100];
    int score;        // 成绩

    // 等号重载
    student operator=(student &st)
    {
        sprintf(szName, st.szName);
        sprintf(szNo, st.szNo);

        score = st.score; 

        return *this;
    }

    // 输出学生信息以及分数

    void printfStu()
    {
        printf("%s\t%s\t%d\n", szName, szNo, score);
    }


};

int main()
{
    int stuCount = 0;
    student stuArray[100];

    printf("请输入学生个数\n");
    scanf("%d", &stuCount);

    printf("姓名\t学号\t成绩\n");

    for (int i = 0; i < stuCount; i++)
    {

        scanf("%s %s %d", 
            stuArray[i].szName, 
            &stuArray[i].szNo, 
            &stuArray[i].score);
    }

    // 排序
    for (int i = 0; i < stuCount; i++)
    {
        for (int j = 0; j < stuCount - i -1; j++)
        {
            if (stuArray[j + 1].score < stuArray[j].score)
            {
                student stu = stuArray[j];
                stuArray[j] = stuArray[j + 1];
                stuArray[j + 1] = stu;
            }
        }
    }

    // 打印
    printf("姓名\t学号\t成绩\n");

    for (int i = 0 ; i < stuCount; i ++)
    {
        stuArray[i].printfStu();
    }

    return 0;
}

回答(2):

在printf("%d\n",c);后面再加一条语句:
getch();
原因:不加getch();程序直接运行完了,你啥也没有看到,
加了后,程序等待你再输入一个字符才结束.