C语言,使用指针,求10个数中的最大值及其位置

迷茫…用if将指针指向最大数后,输出的总是第一个数…另外对“位置”一次很不解……这是书上的原题…我的部分语句:for(i=1;i<=9;i ) {if(a[0]<a[i]) a[0]=a[i];}… *p=a[0]; 然后各种杯具…要么输出的是地址,要么只输出第一个元素,我的printf函数部分都没问题,希望高人能给出个完整的代码…我快崩溃了……

#include<stdio.h>
void main()
{
int a[10];
int i,row,max;
for(i=0;i<9;i++)
{
scanf("%d",a+i);//a+i代表&a[i]
}
for(i=0,max=*a,row=i;i<9;i++)
{
if(max<*(a+i))//*(a+i)代表a[i]
{
void swap(int *a,int *b);
swap(&max,a+i);
row=i;
}
}
printf("%d,%d\n",row,max);
}
void swap(int *pa,int *pb)
{
int tmp;
tmp=*pa;
*pa=*pb;
*pb=tmp;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-01
int functionA(int *a, int len, int *value, int *pos)
{
int i = 0;
if(a == NULL || len <=0)
{
return 0;
}
*value = a[0];
*pos = 0;
for(i = 1; i < len; i++)
{
if(a[i] > *value)
{
*value = a[i];
*pos = i;
}
}
return 1;
}

int main()
{
int a[10] = {2,4,5,1,2,4,5,7,4,9};
int value = 0;
int pos = 0;
if(functionA(a, 10, &value, &pos) == 1)
{
printf("The lagest value is:%d, the pos is:%d", value, pos);
}
return 1;
}本回答被网友采纳
相似回答