C++如何随机生成学号一类?
发布网友
发布时间:2024-05-06 14:09
我来回答
共1个回答
热心网友
时间:2024-06-24 13:20
#include <iostream>
#include <cstring>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main(int argc, char** argv)
{
srand((unsigned)time(0));
char* s[50]; //生成50个学号
for(int i=0;i<50;i++)
{
s[i]=new char[12]; //为每个学号分配内存空间
while(1)
{
bool flag=true;
for(int j=0;j<11;j++) //每个学号的每一位取随机数,共11位
{
s[i][j]=48+rand()%10;
}
s[i][11]='\0'; //每个学号的末尾位为'\0'
for(int k=0;k<i;k++) //检测是否和已生成的学号重复
{
if(strcmp(s[k],s[i])==0)
{
flag=false;
break;
}
}
if(flag==true) //如不重复则进行下一个学号的生成
{ //重复则重新取随机数
break;
}
}
}
for(int i=0;i<50;i++) //测试输出
{
printf("\n%s",s[i]);
}
return 0;
}