#include"stdio.h" //求N名同學最高分然後輸出該同學的分數和學號
#define N 10
void finemax(int *p,int *q,int k)
{
int i,*m,*n;
*m=*p;
*n=*q;
for
(i=0;i小於k;i++)
{
if(*p>*m)
{*m=*p;*n=*q;}
p++;
q++;
}
printf("最高分是:%d,學號為:%d\n",*m,*n);
}
int main()
{
int i,k,a[N],b[N]; //數組a存學生成績,b存學號。
printf("請輸入要計算同學數量:");
scanf("%d",&k);
printf("請分別輸入同學的成績和學號:\n");
for(i=0;i<k;i++)
{
scanf("%d",&a[i]);
scanf("%d",&b[i]);
}
finemax(a,b,k);
return 0;
}
幫忙分析一下原因
問題出在 int i,*m,*n;。你這樣聲明 m,和n,他倆是指針類型,並沒有分配內存空間。然後你就進行*m=*q,這句話的意思是把q指向的內存的值賦值給m指向的內存,但是此時m並沒有分配內存,這樣就產生了錯誤。
你應該這樣聲明m,n。 int m,n。不要聲明稱指針類型。不知道這樣說你明不明白