第1个回答 2007-03-08
我有给你原代码:
#include <iostream.h>
#include <stdlib.h>
#include <vector>
using namespace std;
int initArray(int n,vector<int> &arr)
{
for(int i=0;i<n;i++)
{
arr[i]=rand()%100;
}
return 0;
}
void getSome(int n,int subNum,vector<int> arr,vector<int> &res)
{
vector<int>::iterator it=arr.begin(),temp;
for(int i=0;i<subNum;i++)
{
int t=rand() % n;
temp=it + t ;
res[i]=*temp;
arr.erase( temp);
n--;
}
}
void disp(vector<int> arr)
{
vector<int>::iterator i;
for(i=arr.begin();i!=arr.end();i++)
{
cout<<*i<<"\t";
}
cout<<endl;
cout<<"------------------------------------------------------"<<endl;
}
void main()
{
int num;
int subNum;
cout<<"请输入组大小"<<endl;
cin>>num;
cout<<"请输入选择的个数"<<endl;
cin>>subNum;
vector<int> arr(num);
vector<int> res(subNum);
initArray(num,arr);
getSome(num,subNum,arr,res);
disp(arr);
disp(res);
system("pause");
}
就这么简单~~是要交作业的吧~~朋友~~还是驳采?
呵呵~~
总之祝你成功~
有空给我留言,其实我很菜的~~
第3个回答 2007-03-09
//由于不知道你还有些什么要求(或具体点的要求)。所以大概写了下。不是很详细。请见谅。
//----------------------------
#include<stdio.h>
void main()
{
int i,j,temp,a[10]={0};
int num[10]={1,2,3,4,5,6,7,8,9,10};//可修改成int范围内的任意数
srand((unsigned)time( NULL ));//种下种子
i=0;
while(i<4)
{
temp=rand()%10;//选哪个数?
if(a[temp]==0)//该数没选过,则输出
{
printf("%d ",num[temp]);//该数没选过,则输出
a[temp]=-1;//设置为已经选过
i++;//选择的数目加一
}
}
getch();//Win-TC中使用。
}
//---------要求用户自己输入10个任意数(int 范围内)-----------------
#include<stdio.h>
void main()
{
int i,j,temp,a[10]={0};
int num[10];
/*要求用户自己输入10个数*/
printf("Input Ten Num Please~:\n");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
/*------------*/
srand((unsigned)time( NULL ));//种下种子
i=0;
while(i<4)
{
temp=rand()%10;//选哪个数?
if(a[temp]==0)//该数没选过,则输出
{
printf("%d ",num[temp]);//该数没选过,则输出
a[temp]=-1;//设置为已经选过
i++;//选择的数目加一
}
}
getch();//Win-TC中使用。
}
//------------10个任意数有程序产生,可重复----------------------
#include<stdio.h>
void main()
{
int i,j,temp,a[10]={0};//使用a[10]有点耗内存,不是很好。
int num[10];
for(i=0;i<10;i++)
{
num[i]=rand()%100;//产生随机数范围。
/*if(rand()%2)//可选,随机产生正负数。
num[i]=-num[i];*/
}
srand((unsigned)time( NULL ));//种下种子
i=0;
while(i<4)
{
temp=rand()%10;//选哪个数?
if(a[temp]==0)//该数没选过,则输出
{
printf("%d ",num[temp]);//该数没选过,则输出
a[temp]=-1;//设置为已经选过
i++;//选择的数目加一
}
}
getch();//Win-TC中使用。
}
在WIN-TC下编译通过。