指针、动态数组和函数问题

试题描述

   输入M个班级(每个班级N个学生)学生的计算机文化基础课程成绩,请你设计一个函数来编程找出这些学生中成绩最高的同学(假定最高分只有一名同学),返回最高成绩、该同学是第几个班级的第几个学生(班级和学生编号均从1开始)。

输入

   输入包含M + 1行: 
   第一行是正整数M和N,用一个空格隔开。 
   第二行到第M + 1行,每行都有N个非负整数,邻近两数用一个空格隔开。

输出

   输出最高分、取得最高分的同学是第几个班级的第几个学生(班级和学生编号均从1开始)。

输入示例

   3 4 
   81 72 90 74 
   72 66 55 83 
   91 72 83 94

输出示例

   94 3 4

数据范围

   输入输出均为int范围的正整数

参考代码

#include<stdio.h>
#include<stdlib.h>
int m,n;
int find(int **a,int M,int N)
{
	int i,j,max=0;
	for(i=0;i<M;i++)
		for(j=0;j<N;j++)
			if(a[i][j]>max)
			{
				max=a[i][j];
				m=i;
				n=j;
			}
	return max;
}

int main()
{
	int i,j,M,N;
	int **num;
	scanf("%d%d",&M,&N);
	num=(int**)malloc(M*sizeof(int*));
	for(i=0;i<M;i++)
		num[i]=(int*)malloc(N*sizeof(int));
	for(i=0;i<M;i++)
		for(j=0;j<N;j++)
			scanf("%d",&num[i][j]);
	printf("%d ",find(num,M,N));
	printf("%d %d",m+1,n+1);
	return 0;
}
Code language: PHP (php)

留下评论