以下程序中函数fun(int a[],int N)的功能是删除数组中a的前N个元素中重复元素,并返回删除元素的总数。

以下程序中函数fun(int a[],int N)的功能是删除数组中a的前N个元素中重复元素,并返回删除元素的总数。,第1张

我将你的fun()函数进行告烂了修改,你看一看

#include <iostream>

using namespace std

int fun(int *a,int N)

{

int n=0,m

for(int i=0i<N-n-1i++)

{

for(int j=i+1j<N-nj++){

if(a[j]==a[i]){

m=1

for(int k=j+1k<N-nk++){

if(a[k]==a[i]){

m++

}

else{

a[j]=a[j+m]

j++

}

}

n+=m

}

}

}

return N-n

}

void print(int a[],int n)

{

for(int i=0i<ni++)

cout<<'\t'<<a[i]

cout<<endl

}

int main()

{

int a[10]={4,1,3,3,1,2,4,3,4,4},b[6]={1,2,1,3,2,1}

int n=fun(a,10)

cout<带念<袜行漏"数组a处理后的数组为:"

print(a,n)

n=fun(b,6)

cout<<"数组b处理后的数组为:"

print(b,n)

return 0

}

在main函数中,fun(7,3,a)

表示调用前面定义的fun

(int

x,

int

y,

int

z)

函数

并把7,3,a这三个携局参数分别传简隐基给x,y,z

不过~由于fun函数中没有返回任何值,所以~~还是原来的a

要想得到那个等式z=x

*

x

+

y

*

y

的结果

应在该语句下加一条

return

z

但是~这样一来,a就没有作用到了拦谨。

不知道你的程序是要实现什么的

首先这个i在这里是全局变量,那个fun函数执行完了后并不释放i也就是一直保留i的值而不会消失,第一次执行fun函数时,k=0+10=10;i=10+10=20;返回k=10的值,这是第一个j=10;第二次执困此雀行fun函数时,k=0+20=20;这个20是i在第一次执行fun函数时,i=i+10这个语句得到的值,一直保留而没有被释放,即消失掉。在第二次执行fun函数时,扒搏i的值就是20了。那么k=20就汪早是这么来的,返回k值就是20. 最后输出的两个结果就是 10 20


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12567285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存