我尝试使用数组和指针找到最大数字,但程序在"找到步骤"时会出错。你能告诉我我的错误在哪里吗?
void find_two_largest(int a[], int n, int *largest)
{
int i;
for(i=0;i<n;i++)
{
printf("enter %d. value: ",i+1);
scanf("%d",&a[i]);
}
int max=a[0];
for(i=0;i<n;i++)
if(a[i]>max) max=a[i];
largest=&max;
printf("%d",*largest);
}
int main()
{
int n,i,a[100],*lar=NULL;
printf("how many elements you want to store?\t");
scanf("%d",&n);
find_two_largest(a, n, lar);
return 0;
}
答案 0 :(得分:0)
主程序未初始化*lar
,find_two_largest
函数在设置用户值之前初始化max
,因此max可以是内存中的任何值。
void find_two_largest(int a[], int n, int *largest)
{
int i,max;
for(i=0;i<n;i++)
{
printf("enter %d. value: ",i+1);
scanf("%d",&a[i]);
}
//initialize max after entering values
max=a[0];
for(i=0;i<n;i++)
if(a[i]>max) max=a[i];
*largest=max;
printf("%d",*largest);
}
int main()
{
int n,i,a[100],*lar,*slar;
//initialize;
*lar=INT_MIN;
printf("how many elements you want to store?\t");
scanf("%d",&n);
find_two_largest(a, n, lar);
return 0;
}
答案 1 :(得分:-2)
从lar定义中删除*。 这样应该是:
int n,i,a[100], lar,*slar;
然后添加&amp;打电话:
find_two_largest(a, n, &lar);
之后,在设置[0]值之后输出max = a [0]。