吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 661|回复: 11
收起左侧

[讨论] C语言求助 数据结构

  [复制链接]
澄叔 发表于 2023-3-12 17:48
顺序表基本操作——学生成绩信息管理
【问题描述】定义一个包含学生成绩(学号,姓名,成绩)的顺序表,读入相应的成绩信息来完成学生成绩表的创建。然后,(1)查找统计不及格的学生人数,(2)删除并以学号升序方式逐行输出不及格的学生信息。
【输入形式】
输入n+1行,其中第1行是学生人数,后n行是n本图书的信息(学号,姓名,成绩),每条信息占一行,学号、姓名、成绩使用空格分隔,成绩之后没有空格。【输出形式】输出数据有m+1行,其中第1行是不及格学生人数,后m行是不及格学生信息,每条信息占一行,学号、姓名、成绩使用空格分隔,成绩之后没有空格。【样例输入】31001 zhangsan 341002 wangwu 661003 lisi 56
【样例输出】21001 zhangsan 341003 lisi 56【样例说明】如果不存在不及格同学,则输出提示信息“not found”

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
结衣酱 发表于 2023-3-12 18:04
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 澄叔 发表于 2023-3-12 18:15
结衣酱 发表于 2023-3-12 18:04
这题一点思路都没有吗?定义抽象数据类型,查找,删除。
还是单纯来抄答案的!

刚刚学习了顺序表和链表,虽然大致理解,但对于这些内容还不能去运用
我也很苦恼。
(下午直接用结构体数组+排序写,但出了不少问题,所以来这里找找解答)
不要骂不要骂!
不是俩抄答案的
dong555 发表于 2023-3-12 18:22
 楼主| 澄叔 发表于 2023-3-12 18:24
dong555 发表于 2023-3-12 18:22
去问chatgpt就行了  生成也快

还没用过呢
dong555 发表于 2023-3-12 18:25

把你那个题目发到chatgpt 再继续问 用c++
就有答案了
叫我小白呀 发表于 2023-3-12 18:27
你是哪部分不会,建议先试试,出错的拿出来单独说,定义数据不会吗
aonima 发表于 2023-3-12 18:27
网上搜索一下,这样例网上多的是
mainblog 发表于 2023-3-12 19:21
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_NAME_LENGTH 20

typedef struct {
    char id[10];
    char name[MAX_NAME_LENGTH + 1];
    int score;
} Student;

// 比较函数,用于按学号升序排序
int cmp(const void *a, const void *b) {
    return strcmp(((Student*)a)->id, ((Student*)b)->id);
}

int main() {
    int n;
    scanf("%d", &n);

    Student students[n];
    for (int i = 0; i < n; i++) {
        scanf("%s %s %d", students[i].id, students[i].name, &students[i].score);
    }

    int fail_count = 0;
    for (int i = 0; i < n; i++) {
        if (students[i].score < 60) {
            fail_count++;
        }
    }

    if (fail_count == 0) {
        printf("not found\n");
    } else {
        printf("%d\n", fail_count);
        // 删除并输出不及格学生信息
        qsort(students, n, sizeof(Student), cmp);
        for (int i = 0; i < n; i++) {
            if (students[i].score < 60) {
                printf("%s %s %d\n", students[i].id, students[i].name, students[i].score);
            }
        }
    }

    return 0;
}
稻草。 发表于 2023-3-12 19:24
chatGPT写的
题目描述
定义一个包含学生成绩(学号,姓名,成绩)的顺序表,读入相应的成绩信息来完成学生成绩表的创建。然后,(1)查找统计不及格的学生人数,(2)删除并以学号升序方式逐行输出不及格的学生信息。

解题思路
首先,我们需要定义一个结构体,用于存储学生的学号、姓名和成绩信息。然后,我们可以使用一个数组来存储这些学生的信息。接着,我们可以遍历这个数组,找到不及格的学生并统计其人数,并将其信息删除并按照学号升序方式逐行输出。

[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
// 定义学生结构体
typedef struct {
    char id[20];
    char name[20];
    int score;
} Student;
int main() {
    Student students[MAX_SIZE]; // 存储学生信息的数组
    int n; // 学生数量
    int count = 0; // 不及格学生数量
    scanf("%!d(MISSING)", &n);
    // 读入学生信息
    for (int i = 0; i < n; i++) {
        scanf("%!s(MISSING) %!s(MISSING) %!d(MISSING)", students[i].id, students[i].name, &students[i].score);
        if (students[i].score < 60) {
            count++; // 统计不及格学生数量
        }
    }
    // 输出不及格学生信息并删除
    for (int i = 0; i < n; i++) {
        if (students[i].score < 60) {
            printf("%!s(MISSING) %!s(MISSING) %!d(MISSING)\n", students[i].id, students[i].name, students[i].score);
            for (int j = i; j < n - 1; j++) {
                students[j] = students[j + 1]; // 将后面的学生信息往前移动
            }
            n--; // 学生数量减一
            i--; // 继续检查当前位置
        }
    }
    printf("不及格学生人数为:%!d(MISSING)\n", count);
    return 0;
}
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-10 21:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表