#include <stdio.h>
#include <stdlib.h>
int main()
{
int N,T=1,M=0,Z=0;
while(1)
{
scanf("%d%*c",&N);
if(N>=2&&N<=21) break;
}
int *p=(int *)malloc(sizeof(int)*N);
for(int i=0;i<N;++i) scanf("%d",&p[i]); //输入N个数
for(int i=0;i<N-1;++i) //绝对值从大到小排序
{
for(int j=i+1;j<N;++j)
{
if(abs(p[i])<abs(p[j]))
{
int m=p[i];
p[i]=p[j];
p[j]=m;
}
}
}
for(int i=0;i<N;++i)
{
if(p[i]<0) ++M;
if(p[i]==0) ++Z;
}
if(N==2) printf("%d\n",p[0]*p[1]);
else if(N-Z>2)
{
for(int i=0;i<N-Z;++i) T*=p[i];
if(M%2)
{
int i=N-Z-1;
while(p[i]>0&&i>=0) --i;
printf("%d\n",T/p[i]);
}
else printf("%d\n",T);
}
else printf("%d\n",p[0]*p[1]>0?p[0]*p[1]:0);
free(p);
return 0;
}
你试试吧,不输入m的值,然后计算出积,我只能想到这种情况。如果还不对我就没办法了。
#include <stdlib.h>
int main()
{
int N,T=1,M=0,Z=0;
while(1)
{
scanf("%d%*c",&N);
if(N>=2&&N<=21) break;
}
int *p=(int *)malloc(sizeof(int)*N);
for(int i=0;i<N;++i) scanf("%d",&p[i]); //输入N个数
for(int i=0;i<N-1;++i) //绝对值从大到小排序
{
for(int j=i+1;j<N;++j)
{
if(abs(p[i])<abs(p[j]))
{
int m=p[i];
p[i]=p[j];
p[j]=m;
}
}
}
for(int i=0;i<N;++i)
{
if(p[i]<0) ++M;
if(p[i]==0) ++Z;
}
if(N==2) printf("%d\n",p[0]*p[1]);
else if(N-Z>2)
{
for(int i=0;i<N-Z;++i) T*=p[i];
if(M%2)
{
int i=N-Z-1;
while(p[i]>0&&i>=0) --i;
printf("%d\n",T/p[i]);
}
else printf("%d\n",T);
}
else printf("%d\n",p[0]*p[1]>0?p[0]*p[1]:0);
free(p);
return 0;
}
你试试吧,不输入m的值,然后计算出积,我只能想到这种情况。如果还不对我就没办法了。
[此贴子已经被作者于2016-11-30 00:36编辑过]