【例9.7】从键盘输入某班同学某门课的成绩(每班人数最多不超过40人,具体人数由键盘输入),
试着分析下面程序是否能实现并输出最给分及相应学生学号
本例题主要用来学习用指针变量做函数参数的程序实例,因为如果是用“按值调入”函数,除非只返还一个值(return),否则是无法改变数值的。
/*
【例9.7】从键盘输入某班同学某门课的成绩(每班人数最多不超过40人,具体人数由键盘输入),
试着分析下面程序是否能实现并输出最给分及相应学生学号
*/
#include<stdio.h>
#define N 40
void FindMax(int score[],long num[],int n,int *pMaxScore,long *pMaxNum);
int main()
{
int n,i;//n存储多少学生
int score[N],maxScore;//数组score[N]存储学生成绩]
long num[N],maxNum;//数组num[N]存储学生ID,
printf("How many students?");
scanf("%d",&n);
printf("Input students'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=%1d\n",maxScore,maxNum);
return 0;
}
//函数功能:计算最高分及其相应学生的学号
void FindMax(int score[],long num[],int n,int *pMaxScore,long *pMaxNum){
int i;
*pMaxScore=score[0];//假设最高分为score[0]
*pMaxNum=num[0];
for(int i=1;i<n;i++){
if(score[i]>*pMaxScore){
*pMaxScore=score[i];
*pMaxNum=num[i];
}
}
}
可以看到我们使用指针形调入后,函数中的每个指针前都有*,用来取指针指向地址的值。