数组中只出现一次的元素数目
针对一个可能含有重复整数出现的一维整数数组,请输出只出现过一次的整数元素的数目。
示例:给定数组{31,63,75,75,89,47,29,10,89,31},该数组中只出现过一次的整数元素的数目为:4
即:63,47,29,10共4个
完整的代码:
#include<iostream>
#include<fstream>
using namespace std;
#define N 10
int main()
{
int a[N];
int b[100];
int flag;
int sum = 0;
for (int i = 0; i < N; i++)
{
cin >> a[i];
}
for (int j = 0; j < N; j++)
{
b[j] = a[j];//记录下a[]的值
}
for (int p = 0; p < N; p++)
{
flag = 0;
for (int q = 0; q < N; q++)
{
if (a[p] == b[q])//两个数组是一样的,两元素必定有一次重复
{
flag++;
}
}
if (flag == 1)//只重复一次的说明唯一
{
sum++;
}
}
cout << sum;
}
写成函数的形式可以这样写:
int N=10;
int unique_num(int array[])
{
/**********Program**********/
int b[100];
int flag;
int sum = 0;
for (int j = 0; j < N; j++)
{
b[j] = array[j];
}
for (int p = 0; p < N; p++)
{
flag = 0;
for (int q = 0; q < N; q++)
{
if (array[p] == b[q])
{
flag++;
}
}
if (flag == 1)
{
sum++;
}
}
return sum;
/********** End **********/
}
写的比较粗糙,有问题还请指正