第2个回答 2010-11-19
vc6通过调试运行了
#include<iostream>
using namespace std;
void main ()
{
int arr[] ={1,564,234,657,18,565,89,435};
int num1 = *arr<=*(arr+1)?*arr:*(arr+1);
int num2 = *arr<=*(arr+1)?*(arr+1):*arr;
int i;
for(i=2;i<sizeof(arr)/4;i++)
{
if(*(arr+i)<num1)
{
num2=num1;
num1=*(arr+i);
continue;
}
if(*(arr+i)<num2)
{
num2=*(arr+i);
continue;
}
}
cout<<"最小的2个数是:"<<num1<<" 和 "<<num2<<endl;
}
还有一种方法
#include<iostream>
using namespace std;
void main ()
{
int arr[] ={1,564,234,657,18,565,89,435};
int num1 = *arr<=*(arr+1)?*arr:*(arr+1);
int num2 = *arr<=*(arr+1)?*(arr+1):*arr;
int i;
for(i=2;i<sizeof(arr)/4;i++)
{
switch((num1>=*(arr+i)?1:0)+(num2>*(arr+i)?1:0))
{
case 2:
{
num2=num1;
num1=*(arr+i);
}
break;
case 1:
num2=*(arr+i);
break;
default:break;
}
}
cout<<"最小的2个数是:"<<num1<<" 和 "<<num2<<endl;
}
也可以,而且应该比前者稍微快些,不过几乎可以忽略不计了本回答被提问者和网友采纳
第3个回答 2010-11-19
#include<iostream>
using namespace std;
void main (void)
{
int iArr[] ={1,43,1,5,23,7,32,8,32,9,3,5,8,4,4,3,0,3,5,1,0,3,3};
int iNumA = 0;
int iNumB = 0;
int iMixA = iArr[iNumA];
int iMixB = iArr[iNumB];
for (int i = 0; i < sizeof(iArr)/4; i++)
{
if (iMixA > iArr[i])
{
iMixA = iArr[i];
iNumA = i;
}
}
for (int i = 0; i < sizeof(iArr)/4; i++)
{
if ((iMixB > iArr[i])&&(iNumA != iNumB))
{
iMixB = iArr[i];
iNumB = i;
}
}
cout<<"最小的两个数是:"<<iMixA<<"和"<<iMixB<<endl;
system("pause");
}