3083 - 【设计型】第9章: 指针 9.10 将"0"到尾
有一个数组int A[nSize],要求写一个函数:
int myfunc(int *p,int nSize);
nSize最多不超过100,将A中的0移动到数组末尾,将非0的移至开始(保持原来的顺序不变)
例如:
A原来是:1,0,3,4,0,-3,5
经过myfunc处理后为:1,3,4,-3,5,0,0
Input
输入两行数据第一行为即将要输入的整数个数,第二行为要输入的整数(整数之间用空格隔开)。
Output
输出为一行整数,整数之间用空格隔开。
Examples
Input
11 1 0 20 0 -7 0 2 0 2 6 4
Output
1 20 -7 2 2 6 4 0 0 0 0
Solution C
#include<stdio.h> int myfunc(int *p,int nSize); int main() { int A[100],nSize,i,j,k; scanf("%d",&nSize); for(i=0;i<nSize;i++) { scanf("%d",&A[i]); } myfunc(A,nSize); for(i=0;i<nSize;i++) { printf("%d",A[i]); if(i!=nSize-1) printf(" "); } } int myfunc(int *p,int nSize) { int a[100]={0},i,j=0; for(i=0;i<nSize;i++) { if(*(p+i)) a[j++]=*(p+i); } for(j = 0; j < nSize; j++) *(p+j) = a[j]; }