#include<stdio.h>
#include
using namespace std;
int main()
{
int a[]={2,4,5,9,7,3};
int w=10;
int n=6;
int x=count(a,w,n);
printf("%d",x);
}
void count(int a[],int w,int n)
{
int i,j,c=0;
sort(a,a+n);
for(i=0;j=n-1;i<=j)
{
if(a[i]+a[j]<w)
{
i++;
j--;
c++;
}
else if(a[i]=a[j])
{
c++;
}
else
{
j--;
c++;
}
}
}
count() 这个函数的返回类型是 void,而 x 的类型是 int,自然不匹配
按代码逻辑大致修改如下,供参考:
#include <stdio.h>
#include <algorithm.h>
using namespace std;
int count(int a[],int w,int n); //修改
int main()
{
int a[]={2,4,5,9,7,3};
int w=10;
int n=6;
int x=count(a,w,n);
printf("%d",x);
return 0;
}
int count(int a[],int w,int n) //void count(int a[],int w,int n)
{
int i,j,c=0;
sort(a,a+n);
for(i=0,j=n-1;i<=j;) //for(i=0;j=n-1;i<=j) 修改
{
if(a[i]+a[j]<w)
{
i++;
j--;
c++;
}
else if(a[i]==a[j]) //else if(a[i]=a[j]) 修改
{
c++;
}
else
{
j--;
c++;
}
}
return c; //修改
}