永发信息网

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

答案:2  悬赏:60  手机版
解决时间 2021-02-24 07:47
已知整型数组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);
}
哪位高手能帮我看一下?
最佳答案
首先你func函数中的i要提出来定义,不然除了第一个用i控制的for循环外,其他的都会出错,提示:i在当前作用域中未定义。

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

你的func函数返回的不是“第一个值为零的元素的下标”,而是0在原数组中出现的次数
全部回答
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的元素个数 }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
去哪个国家办签证最难
上海汉诺威楼梯我想知道这个在什么地方
第一次世界大战爆发后,意大利加入协约国一方
河南尧山特色风景区的飞瀑流泉
邮政储蓄银行存折锁定了如何解锁?
如何把一个200*80的png格式logo缩小到100*40j
两个鸡蛋,几根青菜丝。(猜诗句)
你好,我是华为G7怎么我下载微信老是显示运用
老水食杂店在什么地方啊,我要过去处理事情
手机换卡需要输小米账号密码
类似cos(-3兀)这种怎么算
锦医眼视光在哪里啊,我有事要去这个地方
一个名字叫做,马xxx金的外国人。。。全名是
请问30千卡等于多少千焦!
随着我国生产力的飞速发展,短缺经济时代结束
推荐资讯
老营村村在什么地方啊,我要过去处理事情
中国联通(铝厂营业部)怎么去啊,有知道地址的
去吧皮卡丘克雷色利亚与达克莱伊那个厉害
java中从标准基准时间以来的数有多大
冷却水塔水管怎么接视频
印制电路板的制作材料主要是绝缘材料、()等。
阿利美食这个地址在什么地方,我要处理点事
【诺基亚listen】listen的意思Iamreachingeno
五(1)班男生人数是女生人数的五分之四,全班人
九顺堂是传销吗
我非常喜欢王俊凯,怎么办?
股票如何做中长线啊?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?