【代码】
#include#include #include #include #define N 5 int count=0; void identifyingCode(char s[],int n,int num) { char str[]="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; int i,k,len; len=strlen(str); srand(num); for (i=0;i k=rand()%len; s[i]=str[k]; } s[i]=' '; } int main() { char code[N+1],str[N+1]; int count=0,n=0,i,j; do { identifyingCode(code,N,n+count/3); printf("请输入五位数验证码:%sn",code); scanf("%s",str); count++; //想办法把str和code里面大写字母全改小写 for (i=0;i =65&&str[i]<=90) str[i]+=32; for (j=0;j =65&&code[j]<=90) code[j]+=32; }while(strcmp(code,str)!=0); printf("验证正确!n"); return 0; }
【解释】
这里定义一个函数用来生成随机验证码,第一个参数是定义好的字符串,第二个参数是验证码个数,第三个参数是随机数种子。
我们可以预先指定好一个str字符串,往里面放所有的数字和大小写字母,然后求出长度,在它长度的范围生成随机数作为下标,在str里面找,把随机数取出来放到原本的字符串code里。
然后mian函数里面用do while循环,循环条件还是code与用户输入的str是否全等的比较,不过在do里面,我们要把生成的验证码code和自己输入的str里面所有的大写都改成小写,达成一视同仁的目的。同时用count给循环计数,超过3,count/3就会加1,改变随机数种子,生成不一样的验证码。



