看上去很简单但实现起来稍微有点麻烦的题目

题目要求:定义一个较简单的数组,包含几个重复的数,输出其中出现过的数值,每个相等的数据值输出一次。

构思:

第一部分 定义一堆东西,为第二部分做铺垫(实际构思是在第二部分之后)

int a[10]={1,2,3,3,1,2,6,4,3,4};
bool ifcx[10];//用于判断数字是否出现过
int n=10;
int *ku=new int[n];//用于存放出现过的数字

for(int i=0;i<10;i++)//第一条给数组变量赋值,第二条可不写(全局中的bool数组变量初始为false) 
{
	ku[i]=0;
	ifcx[i]=false;
}

第二部分用于判断,是最主要部分,烦的就是这里判断后的执行语句

for(int i=0;i<n;i++)
 {
 for(int j=0;j<n;j++)
 {
 if(a[i]==ku[j])//若出现过则退出循环
 break;
 else if(ku[j]==0)//若是新数字,标记
 {
 ku[j]=a[i];
 ifcx[i]=true;
 break;
 }
 else//若还没寻找到相同数且没寻找完,则继续判断
 continue;
 }
 }

第三部分判断是否第一次出现,若是,则输出

for(int i=0;i<10;i++)
 {
 if(ifcx[i]==true)
 cout<<a[i]<<endl;
 }

完整程序

#include
using namespace std;

int main()
{
int a[10]={1,2,3,3,1,2,6,4,3,4};
bool ifcx[10];//用于判断数字是否出现过
int n=10;
int *ku=new int[n];//用于存放出现过的数字

for(int i=0;i<10;i++)//第一条给数组变量赋值,第二条可不写(全局中的bool数组变量初始为false) 
{
	ku[i]=0;
	ifcx[i]=false;
}

for(int i=0;i<n;i++)
{
	for(int j=0;j<n;j++)
	{
		if(a[i]==ku[j])//若出现过则退出循环
			break;
		else if(ku[j]==0)//若是新数字,标记 
		{
			ku[j]=a[i];
			ifcx[i]=true;
			break;
		}
		else//若还没寻找到相同数且没寻找完,则继续判断 
			continue;
			
	}
}

for(int i=0;i<10;i++)
{
	if(ifcx[i]==true)
		cout<<a[i]<<endl;
}

delete ku;
return 0;

}