int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),
使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)
#include<iostream> using namespace std; int fn(int *a, int size) { int *p; int i; int n; int returnval = size; p = a; n = 0; for(i=0;i<size;i++) { if(*(p+i)==0) { if(returnval==size) returnval = i; n++; continue; } if(n!=0&&*(p+i)!=0) { *(p+i-n) = *(p+i); *(p+i) = 0; } } return returnval; } int main() { int a[100]; int i; int size; int zero; while(cin>>size) { for(i=0;i<size;i++) cin>>a[i]; zero = fn(a,size); for(i=0;i<size;i++) cout<<a[i]<<" "; cout<<zero<<endl; } return 0; }