C语言数组应用之学生成绩(个人练习)-创新互联

C语言数组之简单应用

C语言数组的简单应用就是取值并计算了

坚守“ 做人真诚 · 做事靠谱 · 口碑至上 · 高效敬业 ”的价值观,专业网站建设服务10余年为成都成都门帘小微创业公司专业提供成都企业网站建设营销网站建设商城网站建设手机网站建设小程序网站建设网站改版,从内容策划、视觉设计、底层架构、网页布局、功能开发迭代于一体的高端网站建设服务。

比较热门的就是学生成绩的基本操作

重点

自己一定要清楚 这个数组的行(Row)       代表的是什么数据

 这个数组的列(Column) 代表的是什么数据

① 如何定义数组

② 如何初始化数组

③ 如何读取数组里面的某个值

Demo展示

Please enter the number of students.(How many students?)
3
----------------------------------------
There are 3 students
STUDENT No.1 : mark   mark   mark
STUDENT No.2 : mark   mark   mark
STUDENT No.3 : mark   mark   mark
----------------------------------------
Please enter each score.
STUDENT      :Chinese Maths English
STUDENT No.1 :90 90 90
STUDENT No.2 :60 60 60
STUDENT No.3 :90 90 90
----------------------------------------
RESULT
STUDENT      :Chinese Maths English
STUDENT No.1 : 90     90     90
STUDENT No.2 : 60     60     60
STUDENT No.3 : 90     90     90
----------------------------------------
总分
总分 出现同分情况 (可能会出现总分最高排名并列的情况)
学生 No.1: 总分270 平均分90.0
学生 No.3: 总分270 平均分90.0
最高分得主: (有并列排名情况发生时,只显示学号靠前的一名同学)
学生 No.1: 总分270 平均分90.0
----------------------------------------
单科
Chinese 单科出现同分情况 (可能会出现单科状元排名并列的情况)
学生 No.1: 分数90
学生 No.3: 分数90
Chinese 单科状元得主: (有并列排名情况发生时,只显示学号靠前的一名同学)
学生 No.1: 分数90
Chinese 科目平均分: 80.0
----------------------------------------
Maths 单科出现同分情况 (可能会出现单科状元排名并列的情况)
学生 No.1: 分数90
学生 No.3: 分数90
Maths 单科状元得主: (有并列排名情况发生时,只显示学号靠前的一名同学)
学生 No.1: 分数90
Maths 科目平均分: 80.0
----------------------------------------
English 单科出现同分情况 (可能会出现单科状元排名并列的情况)
学生 No.1: 分数90
学生 No.3: 分数90
English 单科状元得主: (有并列排名情况发生时,只显示学号靠前的一名同学)
学生 No.1: 分数90
English 科目平均分: 80.0
----------------------------------------

Process finished with exit code 0

代码演练
#includeint main()
{
//    n个同学 3门科目
//    求平均分 最高分
    short Student_Number = 5;
    const char *Str_Subject[3] = {"Chinese","Maths","English"};
    short Top_one = 0;
    short Container_Subject = 0;
    short Container = 0;
    short Container_Row = 0;

    printf("Please enter the number of students.(How many students?) \n");
    scanf("%hd", &Student_Number);
    printf("----------------------------------------\n");
    printf("There are %hd students\n", Student_Number);

    short mark[Student_Number][3];

    for (int j = 0; j<= (Student_Number-1); ++j) {
        printf("STUDENT No.%d : ", (j+1));
        for (int i = 0; i<= 2; ++i) {
            printf("mark   ");
        }
        printf("\n");
    }

    printf("----------------------------------------\n");
    printf("Please enter each score.\n");
    printf("STUDENT      :");
    for (int i = 0; i<= 2; ++i) {
        printf("%s ",Str_Subject[i]);
    }
    printf("\n");

    for (int j = 0; j<= (Student_Number-1); ++j) {
        printf("STUDENT No.%d :", (j+1));
        scanf("%hd %hd %hd", &mark[j][0], &mark[j][1], &mark[j][2]);
    }

    printf("----------------------------------------\n");
    printf("RESULT     \n");
    printf("STUDENT      :");
    for (int i = 0; i<= 2; ++i) {
        printf("%s ",Str_Subject[i]);
    }
    printf("\n");
    for (int j = 0; j<= (Student_Number-1); ++j) {
        printf("STUDENT No.%d : ", (j+1));
        for (int i = 0; i<= 2; ++i) {
            printf("%-6hd ", mark[j][i]);
        }
        printf("\n");
    }

    printf("----------------------------------------\n");
//    总分最高   分数 是谁
//    单科状元   分数 是谁
//    科目平均分 最高 是什么科目
    for (short k = 0; k<= (Student_Number-1); ++k) {
        Container = 0;
        for (short Column = 0; Column<= 2; ++Column) {
            Container += mark[k][Column];
        }

        if (Container >Top_one){
            Top_one = Container;
            Container_Row = k;
        }
        else if (Container == Top_one){
            printf("总分 \n");
            printf("总分 出现同分情况 (可能会出现总分最高排名并列的情况)\n");
            printf("学生 No.%hd: 总分%hd 平均分%.1f\n", (Container_Row+1), Top_one, Top_one/3.0);
            printf("学生 No.%hd: 总分%hd 平均分%.1f\n", (k+1), Container, Container/3.0);
        }

    }

    printf("最高分得主: (有并列排名情况发生时,只显示学号靠前的一名同学)\n");
    printf("学生 No.%hd: 总分%hd 平均分%.1f\n", (Container_Row+1), Top_one, Top_one/3.0);

    printf("----------------------------------------\n");
    printf("单科\n");
//    单科状元   分数 是谁
//    科目平均分 最高 是什么科目
    for (short k = 0; k<= 2; ++k) {
        Container_Subject = 0;
        Container = 0;
        Top_one = 0;
        for (short Row = 0; Row<= (Student_Number-1); ++Row) {
            Container = mark[Row][k];
            Container_Subject += mark[Row][k];
            if (Container >Top_one){
                Top_one = Container;
                Container_Row = Row;
            }
            else if (Container == Top_one){
                printf("%s 单科出现同分情况 (可能会出现单科状元排名并列的情况)\n", Str_Subject[k]);
                printf("学生 No.%hd: 分数%hd \n", (Container_Row+1), Top_one);
                printf("学生 No.%hd: 分数%hd \n", (Row+1), Container);
            }
        }
        printf("%s 单科状元", Str_Subject[k]);
        printf("得主: (有并列排名情况发生时,只显示学号靠前的一名同学)\n");
        printf("学生 No.%hd: 分数%hd \n", (Container_Row+1), Top_one);
        printf("%s 科目平均分: %.1f \n", Str_Subject[k], (Container_Subject+0.0)/Student_Number);
        printf("----------------------------------------\n");
    }
    
    return 0;
}
出现控制台打印乱码问题?

出现此类问题请参考: 这里 → 我之前的分享

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享标题:C语言数组应用之学生成绩(个人练习)-创新互联
当前链接:http://myzitong.com/article/eicjp.html