wolfie_ 2016-05-02 11:24 采纳率: 0%
浏览 1961
已结题

C语言指针在这个函数里发生了怎样的变化?

从键盘任意输入10个整数,用指针变量作函数参数编程计算最大值和最小值,并返回它们所在数组中的位置。函数原型如下所示:
int FindMax(int num[], int n, int *pMaxPos);//函数返回最大值,pMaxPos返回最大值所在的下标
int FindMin(int num[], int n, int *pMinPos);//函数返回最小值,pMaxPos返回最小值所在的下标
程序运行结果示例:
Input 10 numbers:
-1 2 3 45 92 8 9 12 7 8↙
Max=92,Position=4,Min=-1,Position=0
---------------------------------------------------------------------------题目
我编的程序如下:
#include
int FindMax(int num[],int n, int *pMaxPos);
int FindMin(int num[],int n,int *pMinPos);
int main(void)
{
int x=10;
int y=10;
int i;
int a[10];
int *ptr1=a;
int *ptr2=a;
printf("Input 10 numbers:\n");
for(i=0;i scanf("%d",&a[i]);
FindMax(a,x,ptr1);
FindMin(a,y,ptr2);
printf("%d",*ptr1);
printf("\n%d",*ptr2);
}
int FindMax(int num[],int n, int *pMaxPos)
{
int j,t1;
t1=num[0];
for(j=1;j {
if(num[j]>=t1)
{
t1=num[j];
*pMaxPos=j;
}
}
printf("max point to %d\n",*pMaxPos);
return t1;
}
int FindMin(int num[],int n,int *pMinPos)
{
int i,t;
t=num[0];
for(i=1;i<n;i++)
{
if(num[i]<t)
{
t=num[i];
*pMinPos=i;
}
}
printf("min point to %d\n",*pMinPos);
return t;

}

并没有按照题目输出的格式,是因为想要搞清楚*pMinPos和*pMinPos在函数中到底发生了怎样的变化,为什么我运行出来的结果如下图?求大神帮忙把我的程序改错,让指针能够顺利地指向下标并在主函数里顺利地输出正确结果
图片说明

  • 写回答

4条回答

  • iPINGyou 2016-05-02 12:26
    关注

    你只需要把main里面改一下就行了:
    //FindMax(a,x,ptr1);
    //FindMin(a,y,ptr2);
    printf("%d",FindMax(a,x,ptr1););
    printf("\n%d",FindMin(a,y,ptr2););

    上面只是针对要输出你的答案,需要改的地方还很多。

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料