急求!1急求!!用c语言实现类似网页验证码的算法。拜托啦!!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急求!1急求!!用c语言实现类似网页验证码的算法。拜托啦!!!相关的知识,希望对你有一定的参考价值。
验证码包含数字,大、小写字母,每次验证四个字符,字符随机出现,输入三次验证码错误,系统显示信息
#include <stdio.h>#include<stdlib.h>
#include<time.h>
int isright()
int i,input,letter,flag=0;
int t[4],num,upper,lower;
char a,b,c,d;
//随机数产生
srand((unsigned)time(NULL));
for(i=0;i<4;i++)
input=rand()%3; //验证码可能为:数字、大写字母、小写字母
if(input==0) num=rand()%10+48;printf("%c",num);t[i]=num; //数字
letter=rand()%26;
if(input==1) //大写字母
upper=letter+65;printf("%c",upper);t[i]=upper;
if(input==2) //小写字母
lower=letter+97;printf("%c",lower);t[i]=lower;
printf(" \\n");
//for(i=0;i<4;i++)
//printf("%c",t[i]);
scanf(" %c%c%c%c",&a,&b,&c,&d); //输入验证码
if(a==t[0]&&b==t[1]&&c==t[2]&&d==t[3])
printf("验证码正确\\n"); //验证码匹配
else printf("验证码错误\\n");flag=1;
return flag; //错误则返回1,正确返回0
main()
int sum=0,i,error;
for(i=0;;i++)
error=isright();
sum=sum+error; //统计错误次数
if(sum==3) printf("输入次数达上限!\\n"); break; //错误3次,程序结束
追问
这个要在输入三次验证码错误后,系统显示信息
追答最后一句改成:if(sum>3) printf("输入次数达上限!\n"); break;
追问能给我一个简单的程序设计报告吗?因为c语言程序这个我完全是一窍不通啊!大概格式像这个,最好要有流程图http://wenku.baidu.com/link?url=9sljzHNEti14GEvO65Tc7I5dZyqtq-BDEfTM6LW55a5YPii7KSThS0cYedL60yJT5Nd4EzMpHfqL-rIsBq1u7y991f2vDs-hk5pAsNocZEO
拜托拜托哦,谢谢啦!
照那个格式,还是指那个,我看见那个是完整的啊
参考技术A 用rand函数产生一定范围的随机数字并转化为ascii码字符,保存和显示出来,键盘输入四个字符跟保存的比对,一致就正确,否则错误重输并记录错误次数追问
额,我需要详细的程序设计,最好有每一步的说明,这是课程设计抽到的题目,专业严重不对口啊!!!
c语言编程 写一个函数,实现两个字符串的比较,即写一个类似于strcmp功能的函数。急求,谢谢!
函数原型为: int strcompare(char *p1,char *p2)
设p1指向字符串s1,p2指向字符串s2。要求:当s1=s2时,返回值为0。当s1不等于s2时,返回它们二者的第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二字母不同,“O”与“A”之差为79-65=14);即如果s1>s2,则输出正值;如果s1<s2,则输出负值。
注意:有程序前缀
例如:
输入:
CHINA↙
Chen↙
输出:
-32
前缀代码:
#include <stdio.h>
int strcompare (char *p1,char *p2);
int strcmp(char *s1, char *s2)
while((*s1++ == *s2++)&& *s1);
return (*s1 - *s2);
void main()
char a[10], b[10];
gets(a);
gets(b);
printf("%d\n", strcmp(a, b));
参考技术A #include <stdio.h>
#define N 4
int strcomp(char *s1,char *s2)
for(;*s1==*s2&&*s1&&*s2;s1++,s2++); /* 找不同的字符 */
return(*s1-*s2); /* 返回字符差值*/
void main()
char str[N][50];
int i,j;
for(i=0;i<N;i++)
printf("String #%d:",i+1);
gets(str[i]);
for(j=0,i=1;i<N;i++)
if(strcomp(str[j],str[i])>0) j=i;
printf("Min string is:%s\n",str[j]);
参考技术B #include <stdio.h>
int strcompare (char *p1,char *p2);
int main()
char p1[100],p2[100];
int ans;
gets(p1);
gets(p2);
ans = strcompare(p1,p2);
printf("%d\\n",ans);
return 0;
int strcompare (char *p1,char *p2)
int i;
for(i=0;p1[i]!='\\0' && p2[i]!='\\0';i++)
if(p1[i]==p2[i]) continue;
else return (p1[i]-p2[i]);
if(p1[i]=='\\0' && p2[i]=='\\0') return 0;
else if(p1[i]=='\\0') return -p2[i];
else return p1[i];
参考技术C 3137333的程序有问题,应是:
int strcmp(char *s1, char *s2)
while((*s1==*s2)&&*s1) s1++;s2++;
return(*s1-*s2);
原来程序返回的是不相同字符的下一字符的差值! 参考技术D #include <stdio.h>
int strcompare(char *p1, char *p2);
int main()
char s1[100];
char s2[100];
gets(s1);
gets(s2);
printf("%d\\n", strcompare(s1, s2));
system("pause");
int strcompare(char *p1, char *p2)
for (; *p1 == *p2&&*p1; p1++, p2++);
return *p1 - *p2;
本回答被提问者采纳
以上是关于急求!1急求!!用c语言实现类似网页验证码的算法。拜托啦!!!的主要内容,如果未能解决你的问题,请参考以下文章
利用第三方包(例OpenSSL,Shiro)实现DES算法,用java语言…急求!在线等