编写函数,用指针变量指向数组的最大值,求最大值

代码运行不了,不知道时代码编写不合规还是设计有矛盾。

img

img

#include
void findLargest(int a[],int n,int *plargest)//找最大值 
{
      int i;
    *plargest=a[0];
      for(i=0;iif(a[i]>*plargest)
          {
              *plargest=a[i];
          }
    }
}
void initArray(int a[],int n)//输入函数 
{
    int i;
    for(i=0;i"a[i]=");
       scanf("%d",&a[i]);
     }
}
void outputArray(int a[],int n)//输出数组 
{
        int i;
        for(i=0;i"%d ",a[i]);
        }
} 
int main ()
{
  int m,max;
  int b[20]={0};
  printf("请输入数组长度:"); 
  scanf("%d",m); 
  initArray(b,m);
  outputArray(b,m);
  findLargest(b,m,&max);
  printf("数组中最大的元素为:%d",max);
   
}

错误提示的意思是大括号不匹配,但你提供的代码编译并没有这个错误
有的错误是:scanf("%d",m); 改为 scanf("%d",&m);

参考GPT和自己的思路:

你的代码存在两个问题:

  1. 在输入数组长度时,应该传入该变量的地址,即&m
  2. 在输出数组长度时,应该传入整型变量而不是整型指针,即max而不是&max

修改后的代码如下所示:

#include<stdio.h>
void findLargest(int a[],int n,int *plargest) //找最大值 
{
    int i;
    *plargest = a[0];
    for(i=0; i<n; i++) 
    {
        if(a[i]>*plargest)
        {
            *plargest=a[i];
        }
    }
}
void initArray(int a[],int n) //输入函数 
{
    int i;
    for(i=0; i<n; i++)
    {
        printf("a[%d]=", i);
        scanf("%d", &a[i]);
    }
}
void outputArray(int a[],int n) //输出数组 
{
    int i;
    for(i=0; i<n; i++)
    {
        printf("%d ",a[i]);
    }
} 
int main ()
{
    int m,max;
    int b[20]={0};
    printf("请输入数组长度:"); 
    scanf("%d", &m); 
    initArray(b, m);
    outputArray(b, m);
    findLargest(b, m, &max);
    printf("数组中最大的元素为:%d", max);
    return 0;
}

  scanf("%d",m);
修改下

  scanf("%d",&m);

```c



```

参考GPT和自己的思路:

在第36行应该改为scanf("%d",&m);,因为m是一个整型变量。此外,在函数findLargest的第5行应该加上一个星号,即*plargest=a[0],因为plargest是指向int类型的指针变量,需要通过解引用符*才能访问其所指向的变量。另外,建议在函数initArray、outputArray和main函数中,将数组的长度n作为参数传入,以避免可能出现的溢出问题。最终的代码如下所示:

#include <stdio.h>

void findLargest(int a[], int n, int *plargest) //找最大值
{
    int i;
    *plargest = a[0];
    for (i = 0; i < n; i++)
    {
        if (a[i] > *plargest)
        {
            *plargest = a[i];
        }
    }
}

void initArray(int a[], int n) //输入函数
{
    int i;
    for (i = 0; i < n; i++)
    {
        printf("a[%d]=", i);
        scanf("%d", &a[i]);
    }
}

void outputArray(int a[], int n) //输出数组
{
    int i;
    for (i = 0; i < n; i++)
    {
        printf("%d ", a[i]);
    }
}

int main()
{
    int m, max;
    int b[20] = {0};
    printf("请输入数组长度:");
    scanf("%d", &m);
    initArray(b, m);
    outputArray(b, m);
    findLargest(b, m, &max);
    printf("数组中最大的元素为:%d", max);

    return 0;
}