求高人指点一下这个买双色球的C++代码中的问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 04:25:50
鄙人最近写了一个关于双色球选号的c++程序源代码
要求:选出6个1到33以内的不相同的红号,然后选出一个1到16以内的蓝号,然后按照6个红号从小到大的排列输出,最后输出蓝号。

本来程序没有错误,结果写出来运行之后发现根本没有按照大小顺序排列,而且也有重复的号码出现。
求教指出哪里有错误,并且恳请改正一下。

-------------------------------------------------------
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <cmath>
using namespace std;
void main()
{
int m,n,p,i,j,t,a[8];
for(n=0;n<=5;n++)
{ srand(time(NULL));
a[n]=1+rand()%(33-1+1);
p=n;
for(m=0;m<p;m++)
{if(a[n]==a[m])
{srand(time(NULL));
a[n]=1+rand()%(33-1+1);
m=0;
continue;
}
}
}
srand(time(NULL));
a[6]=1+rand()%(16-1+1);
for(i=0;i<5;i++)
for(j=i+1;j<6;j++)
{t=a[i];a[i]=a[j];a[j]=t;
}
cout&

哥们,你在a[i]和a[j]比较大小想换位置的时候粗心忘了在交换之前加上if(a[i]>a[j])这条语句了,调整如下:
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <cmath>
using namespace std;
void main()
{
int m,n,p,i,j,t,a[8];
for(n=0;n<=5;n++)
{ srand(time(NULL));
a[n]=1+rand()%(33-1+1);
p=n;
for(m=0;m<p;m++)
{if(a[n]==a[m])
{srand(time(NULL));
a[n]=1+rand()%(33-1+1);
m=0;
continue;
}
}
}
srand(time(NULL));
a[6]=1+rand()%(16-1+1);
for(i=0;i<5;i++)
for(j=i+1;j<6;j++)
{
if(a[i]>a[j])//加入此条语句即可
{t=a[i];a[i]=a[j];a[j]=t; }
}
cout<<"周某人为此次双色球预测的号码为:"<<endl;
for(j=0;j<6;j++)
{cout<<setw(4)<<a[j];
}
cout<<"--"<<a[6]<<endl;

}
/*--------------------------------------------