永发信息网

已知整型数组a中有若干元素的值为零,编写函数int func(int *a, int n),将a中的零移至数组后面,非零整数移

答案:2  悬赏:60  手机版
解决时间 2021-02-24 07:47
  • 提问者网友:风月客
  • 2021-02-23 10:05
已知整型数组a中有若干元素的值为零,编写函数int func(int *a, int n),将a中的零移至数组后面,非零整数移至数组前面并从小到大排序。
形参n表示数组中元素的个数,函数返回原数组中第一个值为零的元素的下标。在main函数中调用该函数。*/
#include
using namespace std;
int main()
{
int func(int*a,int n);
int n;
cout<<"input a number:"< cin>>n;
int *a=new int[n];
cout<<"input a string:"< for(int i=0;i cin>>*(a+i);
int m;
m=func(a,n);
cout< return 0;
}
int func(int *a,int n)
{
int b[100];
for(int i=0;i {
int k=i;
for(int j=i+1;j {
int t;
if(*(a+k)>*(a+j))
{
t=*(a+k);
*(a+k)=*(a+j);
*(a+j)=t;
}
}
}
int count=0;
for(i=0;i {
if(*(a+i))
b[count++]=*(a+i);
}
for(int j=0;j {
*(a+j)=*(b+j);
cout<<*(a+j);
}
cout< for(int k=count;k *(a+k)=0;
return (n-count);
}
哪位高手能帮我看一下?
最佳答案
  • 五星知识达人网友:十年萤火照君眠
  • 2021-02-23 11:27
首先你func函数中的i要提出来定义,不然除了第一个用i控制的for循环外,其他的都会出错,提示:i在当前作用域中未定义。

题目要求你是把0放数组后面,但是你似乎只把非0放前面,没有体现出0放后面。

你的func函数返回的不是“第一个值为零的元素的下标”,而是0在原数组中出现的次数
全部回答
  • 1楼网友:从此江山别
  • 2021-02-23 12:22
int func(int a[],int n) { int b[n]; int i; int count=0; for(i = 0; i < n; i++) //复制非0整数到b[ ],删除值为0的元素。 { if (a[i]) b[count++]=a[i]; } for(i = 0; i < count; i++) //复制b[]到a[] a[i] = b[i]; for(i = count; i < n; i++) //填充a[]剩余元素为0 a[i] = 0; return (n-count); //返回原数组a中值为0的元素个数 }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯