您的位置:首页 > 编程语言 > C语言/C++

寻找最高分成绩的学生

2016-05-30 09:36 239 查看
寻找最高分成绩的学生(4分)

题目内容:

下面程序的功能是用动态数组编程输入任意m个班学生(每班n个学生)的某门课的成绩,计算最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。其中,m和n的值由用户从键盘任意输入(不限定m和n的上限值)。程序的运行结果如下所示:

Input array size m,n:

3,4↙

Input 3*4 array:

80 82 63 74↙

60 81 75 68↙

87 91 78 92↙

maxScore = 92, class = 3, number = 4

输入格式:

输入数组大小格式:"%d,%d"

输入数组元素格式:"%d"

输出格式:

输入数组大小的提示信息:"Input array size m,n:\n"

输入数组元素的提示信息:"Input %d*%d array:\n"

输出数据格式:"maxScore = %d, class = %d, number = %d\n"

输入样例:

输出样例:

时间限制:500ms内存限制:32000kb

#include  <stdio.h>

#include  <stdlib.h>

void InputScore(int *p, int m, int n);

int  FindMax(int *p, int m, int n, int *pRow, int *pCol);

int main()

{

    int  *pScore, m, n, maxScore, row, col;

    printf("Input array size m,n:\n");

    scanf("%d,%d", &m, &n);

    pScore=malloc(m*n*sizeof(int));/* 申请动态内存 */

    if (pScore == NULL)

    {

        printf("No enough memory!\n");

        exit(0);

    }

    InputScore(pScore, m, n);

    maxScore = FindMax(pScore,m,n,&row,&col);

    printf("maxScore = %d, class = %d, number = %d\n", maxScore, row+1, col+1);

    free(pScore);                                      /* 释放动态内存 */

    return 0;

}

/* 函数功能:输入m行n列二维数组的值 */

void InputScore(int *p, int m, int n)

{

    int i, j;

    printf("Input %d*%d array:\n", m, n);

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

    {

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

        {

            scanf("%d",&p[i*n+j]);

        }

    }

}

/*  函数功能:计算任意m行n列二维数组中元素的最大值,并指出其所在行列下标值 */

int  FindMax(int *p, int m, int n, int *pRow, int *pCol)

{

    int  i, j, max = p[0];

    *pRow=0;

    *pCol=0;

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

    {

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

        {

            if (max<p[i*n+j])

            {

                max = p[i*n+j];

                *pRow = i;       /*记录行下标*/

                *pCol = j;             /*记录列下标*/

            }

        }

    }

    return max;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言