欢迎来到【设计模式之禅 源码】【易聊网源码】【旅游签证网站源码】谭浩强书中源码_谭浩强pdf-皮皮网网站!!!

皮皮网

【设计模式之禅 源码】【易聊网源码】【旅游签证网站源码】谭浩强书中源码_谭浩强pdf-皮皮网 扫描左侧二维码访问本站手机端

【设计模式之禅 源码】【易聊网源码】【旅游签证网站源码】谭浩强书中源码_谭浩强pdf

2024-11-26 11:33:08 来源:{typename type="name"/} 分类:{typename type="name"/}

1.C语言 键盘输入4个学生姓名以及每个学生3门课的谭浩成绩。
2.哪有c语言教程,强书好点的中源,谢谢。码谭设计模式之禅 源码

谭浩强书中源码_谭浩强pdf

C语言 键盘输入4个学生姓名以及每个学生3门课的浩强成绩。

       有点小复杂哦

       请看下面的谭浩易聊网源码代码

       #include <stdio.h>

       #include <string.h>

       /*常量  字符串默认长度*/

       const int STRING_DEFAULT_LEN = ;

       /*常量  学生人数 4人*/

       const int STUDENTS_COUNT = 4;

       /*常量  课程数量3门*/

       const int COURSE_COUNT = 3;

       /*变量  选课记录*/

       int sign_up_of_course_count;

       /*课程数据结构*/

       struct course {

        char name[STRING_DEFAULT_LEN];

       };

       /*学生数据结构*/

       struct student {

        char name[STRING_DEFAULT_LEN];

       };

       /*学生的选课数据结构,包括学生/课程/得分*/

       struct sign_up_of_course {

        struct student s;

        struct course c;

        float score;

       };

       /*子函数 输出每个学生的强书平均分*/

       void print_avg_of_each_student(const struct sign_up_of_course *, int);

       /*子函数 输出每门课的平均分*/

       void print_avg_of_each_course(const struct sign_up_of_course *, int);

       /*子函数 找出最高分对应的学生和课程*/

       void print_max_score_info(const struct sign_up_of_course *, int);

       int main()

       {

        /*初始化4个学生*/

        struct student s[STUDENTS_COUNT] = {  "StudentA", "StudentB", "StudentC", "StudentD"};

        /*初始化3门课程*/

        struct course c[COURSE_COUNT] = {  "Course1", "Course2", "Course3"};

        /*初始化选课记录*/

        sign_up_of_course_count = STUDENTS_COUNT * COURSE_COUNT;

        struct sign_up_of_course *signup = new struct sign_up_of_course[sign_up_of_course_count];

        memset(signup, 0, sign_up_of_course_count*sizeof(struct sign_up_of_course));

        int i, j;

        for (i = 0; i < STUDENTS_COUNT; i++)

        {

        for (j = 0; j < COURSE_COUNT; j++)

        {

        /*学生和课程数据到该选课记录*/

        memcpy(&((signup + i*(STUDENTS_COUNT-1) + j)->s), &s[i], sizeof(struct student));

        memcpy(&((signup + i*(STUDENTS_COUNT-1) + j)->c), &c[j], sizeof(struct course));

        }

        }

        /*请用户输入每个选课记录的成绩,即各个学生的中源成绩*/

        int k = 0;

        for (k = 0; k < sign_up_of_course_count; k++)

        {

        /*用户输入成绩,保存到选择记录的码谭分数栏中*/

        printf("请输入学生%s的课程%s的成绩:", ((signup + k)->s).name, ((signup + k)->c).name);

        scanf("%d", &((signup + k)->score));

        }

        /*调用子函数 输出每个学生的平均分*/

        print_avg_of_each_student(signup, sign_up_of_course_count);

        /*调用子函数 输出每门课的平均分*/

        print_avg_of_each_course(signup, sign_up_of_course_count);

        /*调用子函数 找出最高分对应的学生和课程*/

        print_max_score_info(signup, sign_up_of_course_count);

        /*销毁分配的内存*/

        delete[] signup;

        getchar();

        getchar();

        return 0;

       }

       /*实现子函数 输出每个学生的平均分*/

       void print_avg_of_each_student(const struct sign_up_of_course * signup, int len)

       {

        struct student_score

        {

        struct student s; /*学生*/

        float avg; /*平均值*/

        float total; /*总分*/

        int count; /*计数*/

        };

        struct student_score scores[STUDENTS_COUNT];

        memset(scores, 0, STUDENTS_COUNT*sizeof(struct student_score));

        int i, j;

        char s1[STRING_DEFAULT_LEN];

        char s2[STRING_DEFAULT_LEN];

        int scores_filled_pos = -1;

        bool scores_record_proessed = false;

        /*处理每一条选课记录,按学生合计*/

        for (i = 0; i < len; i++)

        {

        memset(s1,浩强 0, STRING_DEFAULT_LEN);

        memset(s2, 0, STRING_DEFAULT_LEN);

        /*求学生的分数合计*/

        scores_record_proessed = false;

        for (j = 0; j < STUDENTS_COUNT; j++)

        {

        strcpy(s1, signup[i].s.name);

        strcpy(s2, scores[j].s.name);

        if (strcmp(s1, s2) == 0)

        {

        memcpy(&scores[j].s, &signup[i].s, sizeof(struct student));

        scores[j].total += signup[i].score;

        scores[j].count += 1;

        scores_record_proessed = true;

        continue;

        }

        }

        if (scores_record_proessed == false)

        {

        scores_filled_pos += 1;

        memcpy(&scores[scores_filled_pos].s, &signup[i].s, sizeof(struct student));

        scores[scores_filled_pos].total += signup[i].score;

        scores[scores_filled_pos].count += 1;

        continue;

        }

        }

        /*求平均值并输出*/

        for (j = 0; j < STUDENTS_COUNT; j++)

        {

        scores[j].avg = scores[j].total / scores[j].count;

        printf("学生%s的平均分数是%2.2f\n", scores[j].s.name, scores[j].avg);

        }

       }

       /*实现子函数 输出每门课的平均分*/

       void print_avg_of_each_course(const struct sign_up_of_course * signup, int len)

       {

        struct course_score

        {

        struct course c; /*课程*/

        float avg; /*平均值*/

        float total; /*总分*/

        int count; /*计数*/

        };

        struct course_score scores[COURSE_COUNT];

        memset(scores, 0, COURSE_COUNT*sizeof(struct course_score));

        int i, j;

        char s1[STRING_DEFAULT_LEN];

        char s2[STRING_DEFAULT_LEN];

        int scores_filled_pos = -1;

        bool scores_record_proessed = false;

        /*处理每一条选课记录,按课程合计*/

        for (i = 0; i < len; i++)

        {

        memset(s1,谭浩 0, STRING_DEFAULT_LEN);

        memset(s2, 0, STRING_DEFAULT_LEN);

        /*求学生的分数合计*/

        scores_record_proessed = false;

        for (j = 0; j < COURSE_COUNT; j++)

        {

        strcpy(s1, signup[i].c.name);

        strcpy(s2, scores[j].c.name);

        if (strcmp(s1, s2) == 0)

        {

        memcpy(&scores[j].c, &signup[i].c, sizeof(struct course));

        scores[j].total += signup[i].score;

        scores[j].count += 1;

        scores_record_proessed = true;

        continue;

        }

        }

        if (scores_record_proessed == false)

        {

        scores_filled_pos += 1;

        memcpy(&scores[scores_filled_pos].c, &signup[i].c, sizeof(struct student));

        scores[scores_filled_pos].total += signup[i].score;

        scores[scores_filled_pos].count += 1;

        continue;

        }

        }

        /*求平均值并输出*/

        for (j = 0; j < COURSE_COUNT; j++)

        {

        scores[j].avg = scores[j].total / scores[j].count;

        printf("课程%s的平均分数是%2.2f\n", scores[j].c.name, scores[j].avg);

        }

       }

       /*实现子函数 找出最高分对应的学生和课程*/

       void print_max_score_info(const struct sign_up_of_course * signup, int len)

       {

        /*最多的并列最高分的学生数,即学生总数*/

        const int MAX_COUNT = STUDENTS_COUNT * COURSE_COUNT;

        /*存储最高分信息的强书数组,可存储多个并列最高分*/

        struct sign_up_of_course max_course_signup[MAX_COUNT];

        /*并列最高分个数*/

        int count = 0;

        int i;

        for (i = 0; i < len; i++)

        {

        /*处理第一件时,中源旅游签证网站源码尚无比较对象,码谭作为最高分的浩强初始值*/

        if (i == 0)

        {

        count++;

        memcpy(max_course_signup, signup, sizeof(struct sign_up_of_course));

        continue;

        }

        /*发现更高的分数时,并列最高分个数将降为1 */

        if (max_course_signup[count-1].score < (signup + i)->score)

        {

        count = 1;

        memcpy(&max_course_signup[count - 1],真封神网站源码 signup + i, sizeof(struct sign_up_of_course));

        }

        /*发现并列最高分时,存储数组个数自增1 */

        if (max_course_signup[count - 1].score == (signup + i)->score)

        {

        count++;

        memcpy(&max_course_signup[count - 1], signup + i, sizeof(struct sign_up_of_course));

        }

        }

        /*输出最高分*/

        for (i = 0; i < count-1; i++)

        {

        printf("最高分的学生是%s,课程为:%s。\n",红酒公司网站源码 max_course_signup[i].s.name, max_course_signup[i].c.name);

        }

       }

哪有c语言教程,好点的,谢谢。

       关于c语言教程清华大学出版社的谭浩强版的《C语言程序设计》不错,应该是学习C语言的入门经典书!强烈推荐!!

       其它的c语言教程这些也不错,自己把这些c语言教程下载来好好研究一下吧:

       天学通C语言

       《C语言精彩编程百例》清晰PDF电子书和源代码

       C语言程序设计视频教程--徐红波

       C语言程序设计:现代方法 中文高清PDF下载

       好好研究一下,不错的教程:/s/blog_dffgyff.html