注册 登录
编程论坛 C语言论坛

把整数数组中所有0移到末尾

chychychychy 发布于 2019-12-07 14:57, 1635 次点击
把整数数组中的所有0移到末尾
 题目内容
1.定义函数void  move(int *p,int nSize);将数组p中的0都移至数组末尾,将非0的移至开始(保持原来的顺序)不变。
2.在main函数中调用move函数

输入要求
第一行为整数n,表示数组的长度
第二行为n个整数

输出要求
移动后的数组
printf("%3d",…)

2 回复
#2
rjsp2019-12-07 15:36
int* r = p;
for( const int* q=p; q!=p+nSize; ++q )
    if( *q != 0 )
        *r++ = *q;
for( ; r!=p+nSize; ++r )
    *r = 0;

手机上纯手打,没验证过,仅供参考
#3
纯蓝之刃2019-12-07 15:48
程序代码:
#include <stdio.h>
#include <stdlib.h>

void move(int *p,int nSize);

int main()
{
    int n,i;
    int *a=NULL;
    printf("请输入数据个数:");
    scanf("%d",&n);
    a=calloc(n+1,sizeof(int));
    printf("请输入数据:");
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);

    move(a,n);
    return 0;
}

void move(int *p,int nSize)
{
    int a[nSize],i=0,j=0,k=0;
    for(i=0;i<nSize;i++)
    {
        if(p[i]==0)
            k++;
        else
            a[j++]=p[i];
    }

    for(i=0;i<j;i++)
        printf("%3d",a[i]);
    for(i=0;i<k;i++)
        printf("%3d",0);

}
1