【课上OJ】判断密码强度

一个判断密码强度问题:

假设允许采用以下四类字符作为密码:
(1)大写英文字母,(2)小写英文字母,(3)数字0-9,(4)特殊符号 @ - _ # ~
对密码强度做以下规定:
Best: 长度>=16,且包含以上四类字符,且每类至少有两个不同的字符
Strong: 不符合Best规定,但长度>=10,且包含以上四类字符
Medium: 不符合Best、Strong规定,但长度>=8,且包含以上至少三类字符
Weak:不符合Best、Strong、Medium规定。
现给你一个密码组合,请判断密码强度。
输入格式:一行字符串(长度<100,以换行结束),且保证都是以上四类字符。
输出格式:一行信息,先输出密码长度,然后是强度等级,中间空一格。

输入样例1:[email protected]_-#
输出样例1:16 Best
输入样例2:12345678abcdefghXYZ
输出样例2:19 Medium
输入样例3:[email protected]
输出样例3:4 Weak

题目关键在于Best里面的每类至少有两个不同的字符,若想实现此功能可以定义多个数组。

c源代码:

#include"stdio.h"
int main()
{
char a[100],sz[100],ZM[100],zm[100],fh[100];
int i,j,k,l,m,n,sum,zm0,ZM0,sz0,fh0;
i=0;
k=l=m=n=0;
zm0=0;
ZM0=0;
sz0=0;
fh0=0;
sum=0;
while((a[i]=getchar())!=‘\n‘)
{
i++;
}
for(j=0;j<i;j++)
{
if(a[j]>=‘A‘&&a[j]<=‘Z‘)
{
ZM[k]=a[j];
k++;
}

else if(a[j]>=‘a‘&&a[j]<=‘z‘)
{
zm[l]=a[j];
l++;
}
else if(a[j]>=‘0‘&&a[j]<=‘9‘)
{
sz[m]=a[j];
m++;
}
else
{
fh[n]=a[j];
n++;
}
}
sum=k+l+m+n;
while(k--)
    {
        ZM0++;
        if(ZM[k]==ZM[k-1])
            ZM0--;
    }
    while(l--)
    {
        zm0++;
        if(zm[l]==zm[l-1])
            zm0--;
    }
    while(m--)
    {
        sz0++;
        if(sz[m]==sz[m-1])
            sz0--;
    }
    while(n--)
    {
        fh0++;
        if(fh[n]==fh[n-1])
            fh0--;
    }
if(sum>=16&&ZM0>=2&&zm0>=2&&sz0>=2&&fh0>=2)
printf("%d Best\n",sum);
else if(sum>=10&&ZM0>=1&&zm0>=1&&sz0>=1&&fh0>=1)
printf("%d Strong\n",sum);
else if(sum>=8&&((ZM0>=1&&zm0>=1&&sz0>=1)||(zm0>=1&&ZM0>=1&&fh0>=1)||(zm0>=1&&sz0>=1&&fh0>=1)))
printf("%d Medium\n",sum);
else
printf("%d Weak\n",sum);
return 0;
}

时间: 2024-11-10 07:52:33

【课上OJ】判断密码强度的相关文章

Js判断密码强度并显示提示信息

用javascipt实现的Ajax判断密码强弱的功能,大多数有用户注册功能的网站,都会有这么一个功能,作为WEB程序员,应该会写这种小模块哦,不懂的就看下这个例子,觉得挺简单,当初帮助了不少人学会了密码强度的检测. 表单部分,用来显示密码框和密码强度提示信息: <form name=form1 action="" > 请设置密码:<input type="password" size="10" onKeyUp="pwS

js判断密码强度

html代码: 1 <form name="form1" action=""> 2 密码:<input type="password" size="8" onkeyup="pwStrength(this.value)" onblur="pwStrength(this.value)"> 3 <br> 4 密码强度: 5 <table width=&

js动态判断密码强度

// 网上拷贝的代码,效果不太好需要自己调整<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta htt

Js判断密码强度代码

以前不知道密码强度是怎么搞的,今天看了一下网上写的,好像是这样的,就4个模式 数字,小写字母,大写字母,其他字符 只出现其中的一种为弱 出现其中2种为中 出现2种以上为高 1 /*每个字符对应的模式 => 1,2,4,8对应二进制*/ 2 function everycharmod(i){ 3 if(i >= 'a' && i <= 'z'){ 4 return 1; 5 }else if(i >= 'A' && i <= 'Z'){ 6 re

【课上OJ】掉入陷阱的数

对任意一个自然数N0,先将其各位数字相加求和,再将其和乘以3后加上1,变成一个新自然数N1,然后对N1重复这种操作,可以产生新自然数N2,多次重复这种操作运算,运算结果最终会得到一个固定不变的数Nk,就像掉入一个数字“陷阱”.对输入的自然数,给出其掉入“陷阱”的过程,输入:一个自然数N(N<100000)输出:多行内容,第i行是自然数N掉入陷阱的第i步,格式为: i:Ni,当某个第k步的结果Nk与上一步相同时,停止输出.样例输入:5样例输出:1:162:223:134:13 两个注意点,一个是结

判断密码强度的Java script代码

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> .lv0{ width: 10px; height: 5px; background-color:white; } .lv1{ width: 40px; height: 5px; background-co

简单的密码强度判断

一个简单的判断密码强度的小例子. 密码强度等级设定: 弱:纯字母或者纯数字组成 中:数字与字母混合组成 高:数字,字母,符号三者混合组成 这部分的js代码: $('#pass').keyup(function(e) { // 最强的正则表达式:8位 大小写字母 数字 符号 var strongRegex = new RegExp("^(?=.{8,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*\\W).*$", "g"); // 中等强度 : 7位

利用JavaScript来实现用动态检验密码强度

平时我们会在某些网站的注册页面或者更改密码的页面发现当我们输入密码时,会有一个类似于进度条的长条进行提示用户输入的密码强度.如下图: 我看到有些人用几张不同的图片来替换,这样似乎可以,但是不太好.所以我通过其他方式实现. 实质上这是根据用户输入的不同密码强度来改变 颜色区域的长度. 密码强度这个横条实质是一个div,其他标记也可以,div里面有一个span标记,我就是通过改变span的长度和颜色来表现密码的强度的.原理很简单,但是在操作过程中,可能会遇到一些问题很头疼. 1.先在html页面里面

多平台实现密码强度(Javascript 、android、ios)

密码强度是目前很常用的一种功能,密码强度的实现,在web端都很好实现,可以很轻松的使用Javascript方法实现,目前因为项目需要,要在手机app上也实现密码强度,并且同时要在Android和ios上都实现相同功能,密码复杂度,无外乎大写字母.小写字母.数字和特殊符号,且需要加上重复字符出现的次数等,一般常用的方法都是使用正则表达式. 查阅了很多资料,网上在app端实现密码强度的例子基本没有(手机QQ是调用的web页面,支付根本没有密码复杂度),且又要web端和app端的三种语言通用,没办法只