C++ 现在有五个已知数Num[5],怎么能找出这五个数中是否有相等的数,然后输出来!

比较快速的!

不要两两比较, 效率太次了, 先排序, 然后一次就能全部求出
#include "stdafx.h"
#include "stdio.h"
#include <algorithm>

void main()
{
int Num[5] = {2, 3, 4, 2, 3};
/// 排序.
std::sort(Num, Num+5);
for (int i = 1; i < 5; ++ i)
{
if (Num[i] == Num[i-1])
{
printf("%d\n", Num[i]);
}
}
}
输出
2
3
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-28
#include <iostream>
using namespace std;
int main()
{
int num[5] = {1,2,3,3,3};
int i;
int j;
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
if(num[i]==num[j])
{
cout << "num[" << i << "] = num[" << j << "] = " << num[i] <<endl;
}
}
}
return 0;
}

VC6环境,运行结果
num[2] = num[3] = 3
num[2] = num[4] = 3
num[3] = num[4] = 3
Press any key to continue
第2个回答  2011-10-28
for(int i = 0 ;i < 4 ;i++)
{
for(int j = i+1 ; j < 5 ;j++)
{
if(Num[i] == Num[j])
{
printf("Num[%d] = Num[%d] = %d",i,j,Num[j]); //输出过程
}
}
}
逐次握手比较过程,还可以用来排序过程
第3个回答  2011-10-28
1.对数组排序,例如数组{1,2,3,2,1},排序完后就成了{1,1,2,2,3}。
2.对排序后的数组查找是否有连续相等的元素,有则输出。排序算法我就不写了,自己随便选择一种,对于排好序的数组输出相同元素的方法如下:
void findReapeatNum(int a[], int elemNum)//a是已排好序的数组,elemNum是该数组的元素个数
{
for(int i = 0; i < elemNum; i++)
{
if (a[i] == a[i+1])
{
cout<<a[i]<<endl;
//循环找到下一个不等于a[i]的数,防止对于{1,1,1,2,3}这种会输出两次1
i++;
while(a[i] == a[i+1])
{
i++;
}
}
}
}
第4个回答  2011-10-28
#include<stdio.h>
void main()
{
int b[5]={1,2,2,1,5};
int i=0,j=0;
for(i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
if(b[i]==b[j])
{
printf("%d\n",b[j]);
continue;
}
}
}
第5个回答  2011-10-28
两两比较就是冒泡排序算法,std::sort就是快速排序算法,不管怎样,都是要经过排序的,所以应当用效率最高的排序算法。
即便是 NUM(55555),也能很快的得出结果。
仅供参考。