华为笔试题

来源:互联网 发布:手机看病软件 编辑:程序博客网 时间:2024/06/06 08:47
 int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A0移至后面,非0整数移至 

数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)

 

 

 

#include "stdafx.h"

 

 
 int B[10];

void Func(int *A,int nSize)
{
 int j=0;

 for(int i=0;i<nSize;i++)
 {
  if(A[i]>0)
  {
   B[j]=A[i];
      j++;
  }      
 }

 for(;j<nSize;j++)
 {
  B[j]=0;
 }
}

 

int _tmain(int argc, _TCHAR* argv[])
{
    int A[10]={0,0,0,0,5,8,4,9,0,5};

    Func(A,10);


    for(int i=0;i<10;i++)
 {
        printf("%d ",A[i]);
    }
    printf("\n");
 for(int i=0;i<10;i++)
 {
        printf("%d ",*(B+i));
    }

getchar();

 return 0;
}

 

 

 

 

 

 

 

// 不用全局变量: 

//

#include "stdafx.h"

 

int * Func(int *A,int nSize)
{
 int j=0;
 int *B=new int[10];
 for(int i=0;i<nSize;i++)
 {
  if(A[i]>0)
  {
   B[j]=A[i];
      j++;
  }      
 }

 for(;j<nSize;j++)
 {
  B[j]=0;
 }

 return B;
}

 

int _tmain(int argc, _TCHAR* argv[])
{
    int A[10]={0,0,3,0,5,8,0,9,0,5};

    int *C=new int[10];
 C =Func(A,10);


    for(int i=0;i<10;i++)
 {
        printf("%d ",A[i]);
    }
    printf("\n");
 for(int i=0;i<10;i++)
 {
        printf("%d ",*(C+i));
    }

getchar();

 return 0;
}

 

 

 

原创粉丝点击