如果进行模块化处理,创建函数代码块来实现本题目,需要通过调用指针来实现,否则主函数只是复制了一份数据传给调用函数去执行,被调用函数内部实现了对最高分及对应学号的输出,单主函数中的数据还是原封未动,所以最终该问题的解决,还是要通过C语言的灵魂指针去实现。可执行代码如下:
#include <stdio.h>
#define N 30
void FindMax(int score[],long num[],int n,int* pMaxScore,long* pMaxNum);
int main(void)
{
int score[N],maxScore;
int n,i;
long num[N],maxNum;
printf("How mang students?");
scanf("%d",&n);
printf("Input student's ID and score:\n");
for(i=0;i<n;i++)
{
scanf("%ld%d",&num[i],&score[i]);
}
FindMax(score,num,n,&maxScore,&maxNum);
printf("maxScore=%d,maxNum=%ld\n",maxScore,maxNum);
return 0;
}
void FindMax(int score[],long num[],int n,int* pMaxScore,long* pMaxNum)
{
int i;
*pMaxScore=score[0];
*pMaxNum=num[0];
for(i=1;i<n;i++)
{
if(score[i]>*pMaxScore)
{
*pMaxScore=score[i];
*pMaxNum=num[i];
}
}
}
此程序的运行结果实例如下:
How many student?5
Input student's ID and score:
120310122 84
120310123 83
120310124 88
120310125 87
120310126 61
maxScore =88,maxNum=120310124