求助,C++编程,要求如图。谢谢大佬们。

如题所述

#include<iostream>
using namespace std;
int *myfunc(int *p, int n)
{
for(int i=0;i<n;i++) //从第一个元素开始循环
if (*(p + i) == 0) //碰到为0的元素就与它后面第一个非0的元素交换
for (int j = i + 1; j < n; j++) //找到此时为0的元素后面的第一个非0元素
if (*(p + j) != 0)
{
*(p + i) = *(p + j); //交换
*(p + j) = 0;
break;
}
return p;
}
int main()
{
int n; //数组个数
int *q; //指向数组的指针
cout << "请输入数组元素个数和各元素\n";
cin >> n;
q = new int[n]; //动态分配数组
for (int i = 0; i < n; i++) //输入各数
cin >> *(q+i);
q = myfunc(q, n); //函数调用
for (int i = 0; i < n; i++) //输出
cout << *(q + i)<<" ";
}
温馨提示:答案为网友推荐,仅供参考
相似回答