急求!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);

#include <stdio.h>
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语言…急求!在线等

急求一道编程题

急求 MD5的加密解密算法,用C++实现的源代码 高分答谢

c语言编程 写一个函数,实现两个字符串的比较,即写一个类似于strcmp功能的函数。急求,谢谢!

急求一道c语言编程的答案!!时间急迫!!快快!!

一道c语言的题目 急求代码