跪求 !!!!! 急用 c++ 考试题 用指针做

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:26:08
假定数组a[]中有若干个值为0的元素,用一个循环语句,把a中非0元素放到数组的前半部分,要求非0元素的相对次序保持不变。输出非零元素个数和重排后的数组元素(不输出0元素)。
一定用指针做啊 谢谢谢谢拉拉拉拉拉拉

// wuliao.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <string.h>
//a是原始数组,
//b是目标数组,
//length是长度,
int Func(int* a , int* &b,int Length)
{
//创建b的空间,并且初始化
b = new int[Length];
memset(b,0,sizeof(int)*Length);

//非0计数器
int jsq = 0;

for(int index = Length-1;index>=0;index--)
{
if(a[index])
{
b[Length-jsq] = a[index];
jsq++;
}
}
//指针偏移,你自己修服吧
b=b+jsq;
return jsq;
}
int _tmain(int argc, _TCHAR* argv[])
{
int src[] = {5,0,30,8,6,40,3};

int length = sizeof(src)/sizeof(int);
int *dst;
Func(src ,dst,length);
return 0;
}

要分 我的是遍历一次,但是函数的声明,得看具体情况了

mark!~~晚上看看

void change(int a[],int len)//参数为数组和数组长度
{
int nz=0,i,j;//nz为非0元素个数

for(i=0;i<len;i++)
if(!a[i]) nz++;//计算非0元素个数

for(i=0;i<