设a是一个整型数组,x是一个整数,编写一个子函数将数组a的元素与x相同的元素删除到只剩下一个。
找到第一个x的值不删除,剩下的到x的值都删除即可
你题目的解答代码如下:
#include <iostream>
using namespace std;
int fun(int a[],int n,int x) {
int i,m=0,f=0;
for (i = 0; i < n; i++)
{
if (a[i]==x)
{
f++;
if (f==1)
a[m++] = a[i];
}
else
a[m++] = a[i];
}
return m;
}
int main(void) {
int a[] = {3,5,5,7,4,6,5,5};
int i,x,n = sizeof(a) / sizeof(int);
cin >> x;
n = fun(a,n,x);
for (i = 0; i < n; i++)
{
cout << a[i] << " ";
}
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
#include <iostream>
int fun(int isource[],int itarget,int iArr) {
int m=0,n=0,iTargetNumb = 0, x=0;
for(m=0;m < iArr;m++)
{
if(isource[m] == itarget)
{
n++;
}
}
iTargetNumb = n;
while(n>1)
{
for(m=0;m<iArr-x;m++)
{
if(isource[m] == itarget)
{
for (int j = m ; j < iArr - (x+1); j ++)
{
isource[j] = isource[j + 1];
}
n--;
x++;
break;
}
}
}
return iArr - iTargetNumb + 1;
}
int main(void) {
int isource[] = {7,1,4,2,6,20,15,3,8,5,9,19,11,2,16,17,14,2,13,10};
int itarget = 2;
int i,j,iArr = sizeof(isource) / sizeof(int);
j = fun(isource,itarget,iArr);
for (i = 0; i < j; i++)
{
printf("%d ",isource[i]);
}
return 0;
}
运行结果
7 1 4 6 20 15 3 8 5 9 19 11 16 17 14 2 13 10