【发布时间】:2013-05-21 12:56:08
【问题描述】:
数组在代码中定义 我们应该计算数组中正数的数量 并创建一个新数组并在其中插入所有正数,如果正数 原始数组中的负数大于原始数组中的负数 如果相反(负数大于正数,我们创建一个新数组并插入所有负数)
如果相等(正数和负数) 我们创建一个新数组并首先插入所有正数,然后插入所有负数
*我们必须在函数中用malloc创建数组..
代码:
#include <stdio.h>
#define n 10
void func(int *arr)
{
int i,j,c1=0,c2=0,mat;
for(i=0;i<n;i++)
{
if (*arr>=0) c1++;
else c2++;
arr++;
}
if(c1>c2)
{
mat=(int *)malloc(c1*sizeof(int));
for(i=0;i<c1;i++)
if(*arr>0)
{
mat=*arr;
mat++;
arr++;
}
}
else if(c2>c1)
{
mat=(int *)malloc(c2*sizeof(int));
for(i=0;i<c2;i++)
if(*arr<0)
{
mat=*arr;
mat++;
arr++;
}
}
else
{
mat=(int *)malloc((c1+c2)*sizeof(int));
for(i=0;i<n;i++)
if(*arr>0)
{
mat=*arr;
mat++;
arr++;
}
for(i=0;i<n;i++)
if(*arr<0)
{
mat=*arr;
mat++;
arr++;
}
}
}
main()
{
int array={6,3,5,-5,4,3,-6,-9,6,-16};
int *arr=array;
func(arr);
}
【问题讨论】:
-
这是声明中
mat的错字吗?当你声明它时它应该是*mat,以便它是一个指针。 -
你的代码有很多问题,比如malloc返回被分配给一个整数,main中的数组大小没有定义。如果不是错字请解释一下。
-
如果您在编译时启用警告(
-Wall用于 gcc;/W4用于 MSVC),编译器将指出代码中的各种错误 -
代码一团糟。您使用的算法不能满足您的要求,并且其中有几个错误。我会把它全部废弃并重新开始。