这个C语言程序有四处错误,但我不知怎么改?盼高手指教!

来源:百度知道 编辑:UC知道 时间:2024/05/15 10:01:43
#include <stdio.h>
#include <conio.h>
void find_two_large(int a[],int n,int *largest,int *large);
int f(int n);
main()
{int N,big,small,i;
printf("how many nums your array has:"); /*这样我输入数组的长度,为什么说我没有定义数组呢?*/
scanf("%d",&N);

int b[N];

for(i=0;i<N;i++)
scanf("%d",&b[i]);
find_two_large(b,N,&big,&small); /*这个函数也有错,指针错误*/
printf("the largest is %d\n",big);
printf("the second large is %d\n",small);
getch();
return 0;
}
void find_two_large(int a[],int n,int *largest,int *large)
{int i;
for(i=0;i<n;i++)
{if(*largest<a[i]) *largest=a[i];
if(*large<a[i]&&*large<*largest) *large=a[i];
}
}
还说我表达式语法错误,这个程序是要找数组中最大元素和第二大元素。
数组必须要有明确的长度吗,我这样定义数组,没有先给它长度,不对吗?

动态数组不是这么做的,
这么改:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h> //增加这个头文件引用,后面malloc需要用到
void find_two_large(int a[],int n,int *largest,int *large);
int f(int n);
main()
{int N,big,small,i;
int *b;//这么声明动态数组
printf("how many nums your array has:"); /*这样我输入数组的长度,为什么说我没有定义数组呢?*/
scanf("%d",&N);

//int b[N];
b=(int *)malloc(N*sizeof(int));//在数组元素个数确定后,这么申请动态数组空间

for(i=0;i<N;i++)
scanf("%d",&b[i]);
find_two_large(b,N,&big,&small); //动态数组正确声明后,这个错误就不存在了
printf("the largest is %d\n",big);
printf("the second large is %d\n",small);

delete(b);//动态数组使用后,别忘了释放

getch();
return 0;
}
void find_two_large(int a[],int n,int *largest,int *large)
{int i;
for(i=0;i<n;i++)
{if(*largest<a[i]) *largest=a[i];
if(*large<a[i]&&*large<*lar