m0_74135038 2023-06-09 17:03 采纳率: 100%
浏览 145
已结题

关于#c语言#的问题:要求:输出格式要界面直观、清晰大方、格式规范

设计主函数,在主函中应该有正确输入或调用每个学生的学号及各科成绩(输入可以根据不同的情况采用不同的输入方法)。
要求:输入时有必要的提示信息。
设计子函数,可以求每个学生的平均成绩,每门课的平均成绩等、并保存在数组中;
要求:每个学生至少设计两个子函数。
最后结果输出。要求:输出格式要界面直观、清晰大方、格式规范。

  • 写回答

12条回答 默认 最新

  • 语言-逆行者 2023-06-09 22:05
    关注

    基于new bing的编写修改:

    img

    img

    img

    
    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAX_STUDENT_NUM 20
    #define MAX_SUBJECT_NUM 10
    
    // 学生结构体定义
    typedef struct student {
        int id;
        char name[20];
        float score[MAX_SUBJECT_NUM];
        float average; // 平均成绩
    } student;
    
    void print_menu() {
        printf("\n            欢迎使用学生成绩管理系统,请输入数字执行相应操作:\n");
        printf("              ---------------1. 录入学生信息----------------\n");
        printf("              ---------------2. 输出所有学生信息------------\n");
        printf("              ---------------3. 计算每个学生的平均分数-------\n");
        printf("              ---------------4. 计算每门课程的平均分数-------\n");
        printf("              ---------------5. 退出系统--------------------\n\n");
    }
    
    int get_input(int min, int max) {
        int input;
        do {
            printf("请输入数字(%d-%d): ", min, max);
            scanf("%d", &input);
        } while (input < min || input > max);
        return input;
    }
    
    int input_student_info(student *students, int num_students, int num_subjects) {
        int i, j;
        for (i = 0; i < num_students; i++) {
            printf("录入第%d个学生的信息:\n", i + 1);
            printf("请输入学号:");
            scanf("%d", &students[i].id);
            printf("请输入姓名:");
            scanf("%s", students[i].name);
            for (j = 0; j < num_subjects; j++) {
                printf("请输入第%d门课的成绩:", j + 1);
                scanf("%f", &students[i].score[j]);
            }
        }
        return num_students;
    }
    
    void output_student_info(student *students, int num_students, int num_subjects) {
        int i, j;
        printf("\n所有学生的信息如下:\n");
        printf("| 学号 | 姓名 | ");
        for (j = 0; j < num_subjects; j++) {
            printf("第%d门课程 | ", j + 1);
        }
        printf("\n|------|------|");
        for (j = 0; j < num_subjects; j++) {
            printf("-----------|");
        }
        printf("\n");
        for (i = 0; i < num_students; i++) {
            printf("| %4d | %4s | ", students[i].id, students[i].name);
            for (j = 0; j < num_subjects; j++) {
                printf("%9.2f | ", students[i].score[j]);
            }
            printf("\n");
        }
    }
    
    void calculate_student_average(student *students, int num_students, int num_subjects) {
        int i, j;
        for (i = 0; i < num_students; i++) {
            float sum = 0;
            for (j = 0; j < num_subjects; j++) {
                sum += students[i].score[j];
            }
            students[i].average = sum / num_subjects;
        }
    }
    
    void output_student_average(student *students, int num_students) {
        int i;
        printf("\n每个学生的平均分数如下:\n");
        for (i = 0; i < num_students; i++) {
            printf("%s 的平均成绩为 %.2f\n", students[i].name, students[i].average);
        }
    }
    
    void calculate_subject_average(student *students, int num_students, int num_subjects) {
        int i, j;
        float subject_total[MAX_SUBJECT_NUM] = {0};
        for (j = 0; j < num_subjects; j++) {
            for (i = 0; i < num_students; i++) {
                subject_total[j] += students[i].score[j];
            }
        }
        printf("\n每门课程的平均分如下:\n");
        for (j = 0; j < num_subjects; j++) {
            printf("第%d门课程: %.2f\n", j + 1, subject_total[j] / num_students);
        }
    }
    
    int main() {
        int num_students = 0, num_subjects = 0;
        student students[MAX_STUDENT_NUM];
    
        print_menu();
        int option = get_input(1, 5);
        while (option != 5) {
            switch(option) {
                case 1:
                    printf("请输入要录入的学生数量:");
                    scanf("%d", &num_students);
                    printf("请输入要录入的课程数量:");
                    scanf("%d", &num_subjects);
                    if (num_students > MAX_STUDENT_NUM || num_subjects > MAX_SUBJECT_NUM) {
                        printf("输入数量超过最大限制。\n");
                        break;
                    }
                    input_student_info(students, num_students, num_subjects);
                    break;
                case 2:
                    output_student_info(students, num_students, num_subjects);
                    break;
                case 3:
                    calculate_student_average(students, num_students, num_subjects);
                    output_student_average(students, num_students);
                    break;
                case 4:
                    calculate_subject_average(students, num_students, num_subjects);
                    break;
                default:
                    printf("无效的选择,请重新输入。\n");
                    break;
            }
            print_menu();
            option = get_input(1, 5);
        }
    
        printf("已退出学生成绩管理系统。\n");
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 这一次有糖 2023-06-09 17:07
    关注

    还有要求吗,还是一直出现的成绩管理系统。

    img


    我这里使用了两个结构体实现,总体来说都是入门难度,csdn里有很多相关的,你可以多模仿学习

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAX_STUDENTS 100
    #define MAX_SUBJECTS 5
    #define MAX_NAME_LENGTH 50
    
    struct Student {
        char name[MAX_NAME_LENGTH];
        int id;
        int scores[MAX_SUBJECTS];
        float average_score;
    };
    
    struct Subject {
        char name[MAX_NAME_LENGTH];
        float average_score;
    };
    
    int num_students = 0;
    int num_subjects = 0;
    struct Student students[MAX_STUDENTS];
    struct Subject subjects[MAX_SUBJECTS];
    
    // Function prototypes
    void input_students();
    void input_subjects();
    void input_scores();
    void calc_student_averages();
    void calc_subject_averages();
    void print_results();
    
    int main() {
        printf("欢迎使用学生成绩管理系统!\n");
        printf("请输入学生人数:");
        scanf("%d", &num_students);
        printf("请输入科目数:");
        scanf("%d", &num_subjects);
    
        input_students();
        input_subjects();
        input_scores();
        calc_student_averages();
        calc_subject_averages();
        print_results();
    
        return 0;
    }
    
    void input_students() {
        printf("请依次输入学生的姓名和学号:\n");
        for (int i = 0; i < num_students; i++) {
            printf("请输入第%d个学生的姓名:", i+1);
            scanf("%s", students[i].name);
            printf("请输入第%d个学生的学号:", i+1);
            scanf("%d", &students[i].id);
        }
    }
    
    void input_subjects() {
        printf("请依次输入科目的名称:\n");
        for (int i = 0; i < num_subjects; i++) {
            printf("请输入第%d门科目的名称:", i+1);
            scanf("%s", subjects[i].name);
        }
    }
    
    void input_scores() {
        printf("请依次输入学生的各科成绩:\n");
        for (int i = 0; i < num_students; i++) {
            printf("请输入%s的各科成绩:\\n", students[i].name);
            for (int j = 0; j < num_subjects; j++) {
                printf("请输入%s的%s成绩:", students[i].name, subjects[j].name);
                scanf("%d", &students[i].scores[j]);
            }
        }
    }
    
    void calc_student_averages() {
        for (int i = 0; i < num_students; i++) {
            int sum = 0;
            for (int j = 0; j < num_subjects; j++) {
                sum += students[i].scores[j];
            }
            students[i].average_score = (float)sum / num_subjects;
        }
    }
    
    void calc_subject_averages() {
        for (int i = 0; i < num_subjects; i++) {
            int sum = 0;
            for (int j = 0; j < num_students; j++) {
                sum += students[j].scores[i];
            }
            subjects[i].average_score = (float)sum / num_students;
        }
    }
    
    void print_results() {
        printf("\n学生成绩如下:\n");
        printf("学号\\t姓名\\t");
        for (int i = 0; i < num_subjects; i++) {
            printf("%s\t", subjects[i].name);
        }
        printf("平均分\n");
        for (int i = 0; i < num_students; i++) {
            printf("%d\t%s\t", students[i].id, students[i].name);
            for (int j = 0; j < num_subjects; j++) {
                printf("%d\t", students[i].scores[j]);
            }
            printf("%.2f\n", students[i].average_score);
        }
        printf("\n科目平均分如下:\n");
        for (int i = 0; i < num_subjects; i++) {
            printf("%s\t%.2f\\n", subjects[i].name, subjects[i].average_score);
        }
    }
    
    
    
    评论 编辑记录
  • java入门选手 2023-06-09 17:11
    关注

    好的,以下是基于您的要求编写的 C 代码示例:

    #include<stdio.h>
    #define MAX_STUDENTS 100
    #define MAX_COURSES 10
    
    int num_students;   // 记录学生数量
    float scores[MAX_STUDENTS][MAX_COURSES];
    float averages[MAX_STUDENTS];    // 每个学生的平均成绩
    float course_averages[MAX_COURSES];  // 每门课程的平均成绩
    
    // 函数声明
    void input_scores();
    void print_scores();
    void calculate_averages();
    void print_averages();
    
    int main(){
        printf("请输入学生数量:");
        scanf("%d", &num_students);
    
        input_scores();
        calculate_averages();
        print_scores();
        print_averages();
    
        return 0;
    }
    
    void input_scores(){
        for(int i=0; i<num_students; i++){
            printf("\n请输入第 %d 个学生的成绩\n", i+1);
            for(int j=0; j<MAX_COURSES; j++){
                printf("请输入第 %d 门课的成绩:", j+1);
                scanf("%f", &scores[i][j]);
            }
        }
    }
    
    void calculate_averages(){
        for(int i=0; i<num_students; i++){
            float student_average = 0;
            for(int j=0; j<MAX_COURSES; j++){
                student_average += scores[i][j];
            }
            averages[i] = student_average / MAX_COURSES;
        }
    
        for(int j=0; j<MAX_COURSES; j++){
            float course_total = 0;
            for(int i=0; i<num_students; i++){
                course_total += scores[i][j];
            }
            course_averages[j] = course_total / num_students;
        }
    }
    
    void print_scores(){
        printf("\n成绩单:\n");
    
        printf("学号\t");
        for(int j=0; j<MAX_COURSES; j++){
            printf("课程%d\t", j+1);
        }
        printf("\n");
    
        for(int i=0; i<num_students; i++){
            printf("%d\t", i+1);
            for(int j=0; j<MAX_COURSES; j++){
                printf("%.2f\t", scores[i][j]);
            }
            printf("\n");
        }
    
        printf("\n");
    }
    
    void print_averages(){
        printf("\n平均成绩:\n");
    
        printf("学号\t平均成绩\n");
        for(int i=0; i<num_students; i++){
            printf("%d\t%.2f\n", i+1, averages[i]);
        }
    
        printf("\n每门课的平均成绩:\n");
        for(int j=0; j<MAX_COURSES; j++){
            printf("课程%d\t%.2f\n", j+1, course_averages[j]);
        }
    }
    

    代码解释:

    在主函数中,我们首先需要输入学生数量。然后,通过调用 input_scores() 函数实现输入每个学生的成绩,并利用 scores 二维数组保存。

    接着,调用 calculate_averages() 函数,计算每个学生的平均成绩以及每门课程的平均成绩,分别保存在 averages 数组和 course_averages 数组中。

    最后,分别调用 print_scores()print_averages() 函数,输出成绩单和平均成绩。其中,我们采用多重循环实现了学生、课程的遍历,让输出界面更直观、清晰大方,格式规范,符合您的要求。

    评论
  • Minuw 2023-06-09 17:15
    关注

    oko
    可参考

    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAX_STUDENTS 100
    #define MAX_SUBJECTS 10
    
    int num_students = 0;
    int num_subjects = 0;
    
    int student_ids[MAX_STUDENTS];
    int subject_scores[MAX_STUDENTS][MAX_SUBJECTS];
    float student_averages[MAX_STUDENTS];
    float subject_averages[MAX_SUBJECTS];
    
    void input_students()
    {
        printf("输入学生人数: ");
        scanf("%d", &num_students);
    
        for (int i = 0; i < num_students; i++)
        {
            printf("输入学生的学生ID %d: ", i + 1);
            scanf("%d", &student_ids[i]);
    
            for (int j = 0; j < num_subjects; j++)
            {
                printf("输入科目的分数 %d 学生 %d: ", j + 1, i + 1);
                scanf("%d", &subject_scores[i][j]);
            }
        }
    }
    
    void input_subjects()
    {
        printf("输入科目数量: ");
        scanf("%d", &num_subjects);
    
        for (int i = 0; i < num_subjects; i++)
        {
            printf("输入科目名%d: ", i + 1);
        }
    }
    
    void calculate_student_averages()
    {
        for (int i = 0; i < num_students; i++)
        {
            float sum = 0.0;
            for (int j = 0; j < num_subjects; j++)
            {
                sum += subject_scores[i][j];
            }
            student_averages[i] = sum / num_subjects;
        }
    }
    
    void calculate_subject_averages()
    {
        for (int j = 0; j < num_subjects; j++)
        {
            float sum = 0.0;
            for (int i = 0; i < num_students; i++)
            {
                sum += subject_scores[i][j];
            }
            subject_averages[j] = sum / num_students;
        }
    }
    
    void output_results()
    {
        printf("\n");
        printf("学生ID\t平均分\n");
        for (int i = 0; i < num_students; i++)
        {
            printf("%d\t\t%.2f\n", student_ids[i], student_averages[i]);
        }
    
        printf("\n");
        printf("科目\t\t平均分\n");
        for (int j = 0; j < num_subjects; j++)
        {
            printf("科目 %d\t%.2f\n", j + 1, subject_averages[j]);
        }
    }
    
    int main()
    {
        input_subjects();
        input_students();
    
        calculate_student_averages();
        calculate_subject_averages();
    
        output_results();
    
        return 0;
    }
    
    
    评论 编辑记录
  • Stephen_112 2023-06-09 17:43
    关注
    
    #include <stdio.h>
    
    #define MAX_STUDENTS 100
    #define MAX_SUBJECTS 10
    
    typedef struct {
        char student_id[10];
        float grades[MAX_SUBJECTS];
    } Student;
    
    void input_grades(Student students[], int num_students, int num_subjects) {
        for (int i = 0; i < num_students; i++) {
            printf("请输入第%d个学生的学号: ", i + 1);
            scanf("%s", students[i].student_id);
    
            printf("请输入学生%s的各科成绩:\n", students[i].student_id);
            for (int j = 0; j < num_subjects; j++) {
                printf("请输入第%d门课的成绩: ", j + 1);
                scanf("%f", &students[i].grades[j]);
            }
        }
    }
    
    void calculate_student_averages(Student students[], int num_students, int num_subjects, float student_averages[]) {
        for (int i = 0; i < num_students; i++) {
            float sum = 0;
            for (int j = 0; j < num_subjects; j++) {
                sum += students[i].grades[j];
            }
            student_averages[i] = sum / num_subjects;
        }
    }
    
    void calculate_subject_averages(Student students[], int num_students, int num_subjects, float subject_averages[]) {
        for (int j = 0; j < num_subjects; j++) {
            float sum = 0;
            for (int i = 0; i < num_students; i++) {
                sum += students[i].grades[j];
            }
            subject_averages[j] = sum / num_students;
        }
    }
    
    void display_results(Student students[], float student_averages[], float subject_averages[], int num_students, int num_subjects) {
        printf("学生成绩单:\n");
        for (int i = 0; i < num_students; i++) {
            printf("学生学号: %s\n", students[i].student_id);
            printf("学生成绩: ");
            for (int j = 0; j < num_subjects; j++) {
                printf("%.2f ", students[i].grades[j]);
            }
            printf("\n学生平均成绩: %.2f\n\n", student_averages[i]);
        }
    
        printf("每门课的平均成绩:\n");
        for (int j = 0; j < num_subjects; j++) {
            printf("科目%d平均成绩: %.2f\n", j + 1, subject_averages[j]);
        }
    }
    
    int main() {
        int num_students, num_subjects;
        Student students[MAX_STUDENTS];
        float student_averages[MAX_STUDENTS];
        float subject_averages[MAX_SUBJECTS];
    
        printf("请输入学生人数: ");
        scanf("%d", &num_students);
        printf("请输入科目数: ");
        scanf("%d", &num_subjects);
    
        input_grades(students, num_students, num_subjects);
        calculate_student_averages(students, num_students, num_subjects, student_averages);
        calculate_subject_averages(students, num_students, num_subjects, subject_averages);
        display_results(students, student_averages, subject_averages, num_students, num_subjects);
    
        return 0;
    }
    
    
    评论
  • 是小晴晴呀 2023-06-09 17:56
    关注

    学完c语言有做过一个详细的学生管理系统,你这里是比较简便的

    
    #include<stdio.h>
    #define MAX_STUDENTS 100
    #define MAX_COURSES 10
    int num_students;   // 记录学生数量
    float scores[MAX_STUDENTS][MAX_COURSES];
    float averages[MAX_STUDENTS];    // 每个学生的平均成绩
    float course_averages[MAX_COURSES];  // 每门课程的平均成绩
    // 函数声明
    void input_scores();
    void print_scores();
    void calculate_averages();
    void print_averages();
    int main(){
        printf("请输入学生数量:");
        scanf("%d", &num_students);
        input_scores();
        calculate_averages();
        print_scores();
        print_averages();
        return 0;
    }
    void input_scores(){
        for(int i=0; i<num_students; i++){
            printf("\n请输入第 %d 个学生的成绩\n", i+1);
            for(int j=0; j<MAX_COURSES; j++){
                printf("请输入第 %d 门课的成绩:", j+1);
                scanf("%f", &scores[i][j]);
            }
        }
    }
    void calculate_averages(){
        for(int i=0; i<num_students; i++){
            float student_average = 0;
            for(int j=0; j<MAX_COURSES; j++){
                student_average += scores[i][j];
            }
            averages[i] = student_average / MAX_COURSES;
        }
        for(int j=0; j<MAX_COURSES; j++){
            float course_total = 0;
            for(int i=0; i<num_students; i++){
                course_total += scores[i][j];
            }
            course_averages[j] = course_total / num_students;
        }
    }
    void print_scores(){
        printf("\n成绩单:\n");
        printf("学号\t");
        for(int j=0; j<MAX_COURSES; j++){
            printf("课程%d\t", j+1);
        }
        printf("\n");
        for(int i=0; i<num_students; i++){
            printf("%d\t", i+1);
            for(int j=0; j<MAX_COURSES; j++){
                printf("%.2f\t", scores[i][j]);
            }
            printf("\n");
        }
        printf("\n");
    }
    void print_averages(){
        printf("\n平均成绩:\n");
        printf("学号\t平均成绩\n");
        for(int i=0; i<num_students; i++){
            printf("%d\t%.2f\n", i+1, averages[i]);
        }
        printf("\n每门课的平均成绩:\n");
        for(int j=0; j<MAX_COURSES; j++){
            printf("课程%d\t%.2f\n", j+1, course_averages[j]);
        }
    }
    
    评论
  • coderYYY 前端领域新星创作者 2023-06-10 14:03
    关注

    下面是一个简单的C#程序设计示例,实现输入学生信息、各科成绩和计算平均成绩,并输出结果的功能。在此示例中,使用控制台应用程序来实现,可以根据需求进行修改和扩展。

    using System;
    
    namespace StudentGrades
    {
        class Student
        {
            public string ID { get; set; }
            public string Name { get; set; }
            public double[] Grades { get; set; }
    
            public double AverageGrade()
            {
                double sum = 0.0;
                foreach (double grade in Grades)
                {
                    sum += grade;
                }
                return sum / Grades.Length;
            }
    
            public double CourseAverage(int courseIndex)
            {
                double sum = 0.0;
                foreach (Student student in students)
                {
                    sum += student.Grades[courseIndex];
                }
                return sum / students.Length;
            }
        }
    
        class Program
        {
            static Student[] students;
    
            static void Main(string[] args)
            {
                Console.WriteLine("请输入学生人数:");
                int n = int.Parse(Console.ReadLine());
                students = new Student[n];
                for (int i = 0; i < n; i++)
                {
                    Console.WriteLine("请输入学生信息:");
                    Console.WriteLine("学号:");
                    string id = Console.ReadLine();
                    Console.WriteLine("姓名:");
                    string name = Console.ReadLine();
    
                    double[] grades = new double[3];
                    Console.WriteLine("请输入三门科目成绩:");
                    for (int j = 0; j < 3; j++)
                    {
                        Console.WriteLine("科目" + (j+1) + "成绩:");
                        grades[j] = double.Parse(Console.ReadLine());
                    }
    
                    students[i] = new Student { ID = id, Name = name, Grades = grades };
                }
    
                Console.WriteLine("学生信息输入完毕。");
    
                Console.WriteLine("计算每个学生的平均成绩");
                foreach (Student student in students)
                {
                    double average = student.AverageGrade();
                    Console.WriteLine(student.Name + "的平均成绩为:" + average);
                }
    
                Console.WriteLine("计算每门课的平均成绩");
                for (int i = 0; i < 3; i++)
                {
                    double courseAverage = CourseAverage(i);
                    Console.WriteLine("科目" + (i+1) + "的平均成绩为:" + courseAverage);
                }
    
                Console.ReadLine();
            }
    
            static double CourseAverage(int courseIndex)
            {
                double sum = 0.0;
                foreach (Student student in students)
                {
                    sum += student.Grades[courseIndex];
                }
                return sum / students.Length;
            }
        }
    }
    

    在这个例子中,我们定义了一个Student类,包含学生的基本属性和方法,比如计算平均成绩的方法。然后在Main函数中,读取用户输入的学生信息、各科成绩,并将其保存在Student对象数组中。接下来,计算每个学生的平均成绩、每门科目的平均成绩,输出结果。

    需要注意的是,在输入数据时,我们使用了控制台输出信息来提示用户,让用户输入学生信息、各科成绩等。在实际开发中,可以根据需求进行修改和扩展,比如使用GUI界面来替代控制台界面等。

    评论
  • 关注
    #include <stdio.h>
    
    #define MAX_STUDENTS 100
    #define MAX_SUBJECTS 10
    
    struct student {
        int id;
        char name[20];
        float scores[MAX_SUBJECTS];
        float average_score;
    };
    
    int read_student(struct student *s) {
        printf("请输入学生学号:");
        if (scanf("%d", &s->id) != 1) {
            return -1;
        }
        printf("请输入学生姓名:");
        scanf("%19s", s->name);
        for (int i = 0; i < MAX_SUBJECTS; i++) {
            printf("请输入 %s 成绩:", subject_names[i]);
            if (scanf("%f", &s->scores[i]) != 1) {
                return -1;
            }
        }
        return 0;
    }
    
    void print_student(const struct student *s) {
        printf("%d\t%s\t", s->id, s->name);
        for (int i = 0; i < MAX_SUBJECTS; i++) {
            printf("%.1f\t", s->scores[i]);
        }
        printf("%.1f\n", s->average_score);
    }
    
    void calculate_average_score(struct student *s) {
        float total_score = 0;
        for (int i = 0; i < MAX_SUBJECTS; i++) {
            total_score += s->scores[i];
        }
        s->average_score = total_score / MAX_SUBJECTS;
    }
    
    void calculate_subject_averages(struct student students[], int n, float subject_averages[]) {
        for (int i = 0; i < MAX_SUBJECTS; i++) {
            float total_score = 0;
            for (int j = 0; j < n; j++) {
                total_score += students[j].scores[i];
            }
            subject_averages[i] = total_score / n;
        }
    }
    
    int main() {
        struct student students[MAX_STUDENTS];
        int n = 0;  // 学生总数
        while (n < MAX_STUDENTS) {
            struct student s;
            if (read_student(&s) != 0) {
                break;
            }
            calculate_average_score(&s);
            students[n++] = s;
        }
        float subject_averages[MAX_SUBJECTS];
        calculate_subject_averages(students, n, subject_averages);
        printf("学号\t姓名\t");
        for (int i = 0; i < MAX_SUBJECTS; i++) {
            printf("%s\t", subject_names[i]);
        }
        printf("平均分\n");
        for (int i = 0; i < n; i++) {
            print_student(&students[i]);
        }
        printf("平均分\t\t");
        for (int i = 0; i < MAX_SUBJECTS; i++) {
            printf("%.1f\t", subject_averages[i]);
        }
        printf("\n");
        return 0;
    }
    

    示例程序中定义了一个 struct student 结构体来表示一个学生,其中包含学号、姓名、各科成绩、平均成绩等信息。示例中还定义了一些常量,包括最大学生数、最大科目数以及科目名称数组。然后,示例程序定义了一些函数:

    • read_student 函数用于读取一个学生的信息并将其存储到 struct student 结构体中;
    • print_student 函数用于以规定格式打印一个学生的信息;
    • calculate_average_score 函数用于计算一个学生的平均成绩;
    • calculate_subject_averages 函数用于计算每个科目的平均成绩。

    最后,示例程序在 main 函数中使用上述函数来完成主要任务,实现了一个可以读取多个学生信息并计算其平均成绩以及每个科目的平均成绩的程序。程序中的输入提示信息和输出格式都符合要求。

    评论
  • a辰龙a 2023-06-11 09:49
    关注
    评论
  • yy64ll826 2023-06-13 14:17
    关注

    C语言学生成绩管理系统

    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h> 
    #include<string.h>
    using namespace std;
    typedef struct PNode*LinkList;
    typedef struct PNode{
        int stdio;
        char name[30];
        double chinese;
        double math;
        double english;
        double politics;
        double sum;
        PNode *next;
    }PNode;
     
    int main(){    
        LinkList llist=(LinkList)malloc(sizeof(PNode));
        llist->next=NULL;
        int a,b=1;
        while(b){
            printf("\n-----------------------学生成绩管理系统-----------------------\n");
            printf("请选择你需要的功能:\n");
            printf(" 1.查找     2.插入    3.排序     4.展示     5.删除     6.退出\n");
            scanf("%d",&a);
            switch(a){
                case 1:printf("\n-----------------------学生成绩查找功能-----------------------\n"); check(llist);break;
                case 2:printf("\n-----------------------学生成绩插入功能-----------------------\n"); input(llist);break; 
                case 3:printf("\n-----------------------学生成绩排序功能-----------------------\n"); sortList(llist);break;
                case 4:printf("\n-----------------------学生成绩展示功能-----------------------\n"); display(llist);break; 
                case 5:printf("\n-----------------------学生成绩删除功能-----------------------\n"); deleteList(llist);break; 
                case 6:b = 0; break; 
                default:printf("输入有误!请重新输入!\n");
            }    
        }
        printf("\n-----------------------已退出成绩管理系统-----------------------\n"); 
        return 0;
    }
    
    void input(LinkList llist){
        printf("请输入考试的学生人数:\n");
        int n;scanf("%d",&n);
        LinkList p;
        for(int i=1;i<=n;i++){
            p=(LinkList)malloc(sizeof(PNode));
            printf("请输入学生学号:\n");
            scanf("%d",&p->stdio);
            
            printf("请输入学生姓名:\n");
            scanf("%s",p->name);
            
            printf("请输入学生语文成绩:\n");
            scanf("%lf",&p->chinese);
            
            printf("请输入学生数学成绩:\n");
            scanf("%lf",&p->math);
            
            printf("请输入学生英语成绩:\n");
            scanf("%lf",&p->english);
            
            printf("请输入学生政治成绩:\n");
            scanf("%lf",&p->politics);
            
            p->sum=p->chinese+p->math+p->english+p->politics;
            p->next=llist->next;
            llist->next=p;
        }
        printf("\n-----------------------学生成绩完成录入-----------------------\n");
    } 
    
    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-06-15 19:15
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7441859
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:编写程序计算图形的面积。程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积
    • 除此之外, 这篇博客: 纸牌游戏(C语言实现)中的 星期天小哼和小哈约在一起玩桌游,他们正在玩一个非常古怪的扑克游戏——“小猫钓鱼”。游戏的规则是这样的:将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两人交替出牌。出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾。当任意一人 手中的牌全部出完时,游戏结束,对手获胜。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      **

      #include <stdio.h>
      #include <stdlib.h>
      struct queue{
      	int head;
      	int tail;
      	int data[1000];
      };
      struct stack{
      	int top;
      	int data[10];
      };
      int main()
      {
      	int i,t;
      	struct queue q1,q2;
      	struct stack s;
      	int book[10];
      	
      	q1.head=1;q1.tail=1;
      	q2.head=1;q2.tail=1;
      	
      	s.top=0;
      	for(i=1;i<=9;i++)
      		book[i]=0;
      		
      	for(i=1;i<=6;i++){
      		scanf("%d",&q1.data[q1.tail]);
      		q1.tail++;
      	}
      	for(i=1;i<=6;i++){
      		scanf("%d",&q2.data[q2.tail]);
      		q2.tail++;
      	}
      	while(q1.head<q1.tail&&q2.head<q2.tail)
      	{
      		t=q1.data[q1.head];
      		if(book[t]==0){
      		q1.head++;//q1出牌,即出队列,头指针+1
      		s.top++;//桌面上的牌为栈,仅有头指针操作 
      		s.data[s.top]=t;
      		book[t]=1;
      		}
      		else{
      		q1.head++;
      		q1.data[q1.tail]=t;
      		q1.tail++;
      		while(s.data[s.top]!=t)
      		{
      			book[s.data[s.top]]=0;
      			q1.data[q1.tail]=s.data[s.top];
      			q1.tail++;
      			s.top--;
      		}
      		}
      		t=q2.data[q2.head];
      		if(book[t]==0)
      		{
      			q2.head++;
      			s.top++;
      			s.data[s.top]=t;
      			book[t]=1;
      		}
      		else
      		{
      			q2.head++;
      			q2.data[q2.tail]=t;
      			q2.tail++;
      			while(s.data[s.top]!=t)
      			{
      				q2.data[q2.tail]=s.data[s.top];
      				book[s.data[s.top]]=0;
      				q2.tail++;
      				s.top--;
      			}
      		}
      	}
      	if(q2.head==q2.tail)
      	{
      		printf("q1 win\n");
      		for(i=q1.head;i<q1.tail;i++)//tail始终指向结尾的下一个位置
      			printf("%d ",q1.data[i]);
      	}
      	else
      	{
      		printf("q2 win\n");
      		for(i=q2.head;i<q2.tail;i++)
      			printf("%d ",q2.data[i]);
      	}
      	return 0;
      }
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论
  • Answer348 2023-06-10 11:24
    关注

    回答部分参考、引用ChatGpt以便为您提供更准确的答案:

    以下是一个示例的设计主函数和子函数的实现,用于输入学生的学号和各科成绩,并计算平均成绩:

    # 主函数
    def main():
        # 输入学生数量
        num_students = int(input("请输入学生数量:"))
    
        # 初始化学生信息列表
        students = []
    
        # 输入每个学生的学号和各科成绩
        for i in range(num_students):
            student_id = input("请输入第{}个学生的学号:".format(i+1))
            scores = input("请输入第{}个学生的各科成绩(用空格分隔):".format(i+1)).split()
    
            # 调用子函数计算平均成绩并保存到学生信息中
            avg_score = calculate_average(scores)
            students.append({"学号": student_id, "平均成绩": avg_score})
    
        # 调用子函数计算每门课的平均成绩
        course_averages = calculate_course_averages(students)
    
        # 输出结果
        print("学生信息:")
        for student in students:
            print("学号:{},平均成绩:{}".format(student["学号"], student["平均成绩"]))
    
        print("每门课的平均成绩:")
        for course, avg_score in course_averages.items():
            print("{}:{}".format(course, avg_score))
    
    # 子函数:计算平均成绩
    def calculate_average(scores):
        total = sum(map(float, scores))
        return total / len(scores)
    
    # 子函数:计算每门课的平均成绩
    def calculate_course_averages(students):
        course_scores = {}
        num_students = len(students)
    
        for student in students:
            for course, score in student.items():
                if course != "学号":
                    if course not in course_scores:
                        course_scores[course] = 0
                    course_scores[course] += float(score)
    
        for course, total_score in course_scores.items():
            course_scores[course] = total_score / num_students
    
        return course_scores
    
    # 调用主函数
    main()
    

    请注意,上述代码只是一个示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。

    评论
查看更多回答(11条)

报告相同问题?

问题事件

  • 系统已结题 6月22日
  • 已采纳回答 6月14日
  • 请采纳用户回复 6月13日
  • 创建了问题 6月9日

悬赏问题

  • ¥15 定义了函数,但是无法根据函数定义触发器
  • ¥20 5变量卡诺图化简得出与非门电路图
  • ¥20 位置依赖的碱基序列独热编码
  • ¥15 Python爬取交通拥堵指数数据
  • ¥15 使用vba抓取重定向网页问题
  • ¥20 付费需求测试程序(细谈)。
  • ¥15 为什么这段c++代码会报这么多语法错误?
  • ¥20 如何利用C语言实现用最小二乘法选配两个经验公式
  • ¥50 vue-codemirror如何对指定行 指定位置的 字符进行背景颜色或者字体颜色的修改?
  • ¥30 遇到一个的问题,请教各位