C语言实训,生成不重复的验证码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言实训,生成不重复的验证码相关的知识,希望对你有一定的参考价值。

生成不重复的验证码
设计内容:
生成n个m位的验证码,要求生成的验证码不能重复(验证码可以是纯数字)。如生成100个8位数的验证码,这100个验证码不能重复,要求键盘中输入m和n的数值,输出不重复的验证码。
设计要求:
(1) 要求功能完整,操作方便易行;
(3) 注意程序的实用性、安全性;

#include //提供printf函数声明定义
#include //提供srand函数声明定义rand
#include //提供time函数
int is_same(int *t,int lo,int x);
int main()

int a[10];
int num=20;
int t,i;
srand(time(0));
//函数提供种即time(0)系统间秒数让rand()函数提供数字每秒都

while(num>0) //循环数

for(i=0;i<10;i++) //获取行10数

while(1) //每随机获取数

t=rand()%10;
if(i==0)

a[i]=t;
break;

if(is_same(a,i,t)==0) //必须相同才能获取行数

a[i]=t;
break;


printf("%d ",t);

printf("\n");
num--;


return 0;

int is_same(int *t,int lo,int x) //否相同

int i;
for(i=0;i<lo;i++)

if(*(t+i)==x) //相同返真
return 1;

return 0; //否则返假
参考技术A #include
#include
#include
using namespace std;
int main()

int i,j;
int n[10]; //要产生10个随机数
int n1=100; //100个随机数
int n2=51; //从50开始
// n[0]=rand()%n1+n2;//产生50-150的随机数
srand((unsigned)time(NULL));
for(i=0;i<10;i++)

n[i]=rand()%n1+n2;
while(1) //判断是否重复

for(j=0;j<i;j++)

if(n[i]==n[j])

n[i]=rand()%n1+n2;
j=0;
break;


if(j==i)//新随机数与前面几个随机数都不重复
break;

printf("%d\n",n[i]);//产生从50-150的随机数

return 0;

//你发的程序少太多东西也不清楚你要表达什么意思,唯一理解的是你提出的要求,我编了一个程序可以产生不重复随机数但是不知道有没有系统函数可以这样做,把n1改成10很明显可以看见程序是符合要求的
参考技术B #include
#include "stdlib.h"
#include "time.h"
int main(int argc,char *argv[])
int a[6]=0,1,2,3,4,5,x,i,j,k;
srand((unsigned)time(NULL));
for(k=6,i=0;i<3;i++)
printf("%d ",a[x=rand()%k--]);
j=a[k],a[k]=a[x],a[x]=j;

printf("\n");
return 0;

以上是关于C语言实训,生成不重复的验证码的主要内容,如果未能解决你的问题,请参考以下文章

C语言实训指导

c语言实验报告心得

C语言实型常量

C语言实型常数

C语言实现将一个字符串翻转

C语言实型常量