C语言编译不通过,为什么?

来源:百度知道 编辑:UC知道 时间:2024/06/30 20:42:34
int main()
{
int i,s=0,a[4]={0},b[4]={0};
for (i=0;i<4;i++){
scanf ("%d",&a[i]);
scanf ("%d",&b[i]);
}
if (max(a[2],a[3])<min(a[0],a[1])||min(a[2],a[3])>max(a[0],a[1])||min(b[2],b[3])>max(b[0],b[1])||max(b[2],b[3])<min(b[0],b[1]))
s=0;
else{
reverse a;
reverse b;
s=(a[2]-a[1])*(b[2]-b[1]);
}
printf ("%d\n",s);
return 0;
}

int max (int a,int b)
{
if (a>b)
return a;
else
return b;
}

int min (int a,int b)
{
if (a<b)
return a;
else
return b;
}

void reverse (int s[])//从小到大排序
{
int i=0,j,tmp,n;
for (n=0;s[i]!=0;n++)
;
for (i=0;i<n;i++)
for (j=0;j<n-2;j++)
if (s[j]>s[j+1]){
tmp=s[j];
s[j]=s[j+1];
s[j+1]=tmp;
}
}
#include <stdio.h>

max和min还有reverse3个函数应该在之前申明,在main函数之前写上
int max(int a,int b);
int min(int a,int b);
void reverse(int s[]);
而且在调用reverse函数的时候应该是reverse(a);reverse(b);

reverse 函数错,调用错。缺函数原型声明。
把函数定义放到main前面去,就可以不写原型声明。
完整程序如下:

#include <stdio.h>

int max (int a,int b)
{
if (a>b)
return a;
else
return b;
}

int min (int a,int b)
{
if (a<b)
return a;
else
return b;
}

void reverse (int *s,int n) // queue
{
int i=0,j,tmp;
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (s[i]>s[j]){
tmp=s[j];
s[j]=s[i];
s[i]=tmp;
}
}

int main()
{
int i,s=0,a[4]={0},b[4]={0};
for (i=0;i<4;i++){
scanf ("%d",&a[i]);
scanf ("%d",&b[i]);
}
if (max(a[2],a[3])<min(a[0],a[1])||min(a[2],a[3])>max(a[0],a[1])||min(b[