一个判断密码强度问题:

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

输入样例1:abcdXYZ1234@-_-#
输出样例1:16 Best
输入样例2:12345678abcdefghXYZ
输出样例2:19 Medium
输入样例3:aX1@
输出样例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;
}

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

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

    用javascipt实现的Ajax判断密码强弱的功能,大多数有用户注册功能的网站,都会有这么一个功能,作为WEB程序员,应该会写这种小模块哦,不懂的就看下这个例子,觉得挺简单,当初帮助了不少人学会了密 ...

  2. js判断密码强度是否符合

    /** 判断密码强度是否符合 */ function check_passwd_intensity(password) { value = $.trim(password); if( value.le ...

  3. JavaScript判断密码强度

    以下是代码: <html> <head> <title>JS判断密码强度</title> <script language=javascript& ...

  4. js判断密码强度

    html代码: <form name="form1" action=""> 密码:<input type="password&quo ...

  5. js动态判断密码强度&&实用的 jQuery 代码片段

    // 网上拷贝的代码,效果不太好需要自己调整<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...

  6. 【课上OJ】掉入陷阱的数

    对任意一个自然数N0,先将其各位数字相加求和,再将其和乘以3后加上1,变成一个新自然数N1,然后对N1重复这种操作,可以产生新自然数N2,多次重复这种操作运算,运算结果最终会得到一个固定不变的数Nk, ...

  7. PHP 判断密码强度

                 $score = 0;            if(preg_match("/[0-9]+/",$str))            {           ...

  8. php判断密码强度函数

    其实就是一些策略正则,写好了就留下来以后用. print_r(getPasswordStrength('s1212adsddfASD;\'g;\'gh.h,h..;')); function getP ...

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

    平时我们会在某些网站的注册页面或者更改密码的页面发现当我们输入密码时,会有一个类似于进度条的长条进行提示用户输入的密码强度.如下图: 我看到有些人用几张不同的图片来替换,这样似乎可以,但是不太好.所以 ...

随机推荐

  1. Linux下samba的安装与配置

    背景          在window7下面虚拟了一个CentOS6.3,为了学习命令行就没有装图形包,所以我的CentOS是黑屏的那种,呵呵,当然了,VMWare提供 的增强功能我就不能用了(或许能 ...

  2. P - 奔小康赚大钱 - hdu 2255(带权值的匹配)

    分析:这是一个KM的模板题,也就不多说了,KM最复杂的情况都能过,下面是没有优化过的代码: ****************************************************** ...

  3. jQuery.holdReady()方法用法实例

    调用此方法可以延迟jQuery的ready事件,也就是说尽管文档已经加载完成,也不会执行ready事件处理方法.可以多次调用jQuery.holdReady()方法,以延迟jQuery的ready事件 ...

  4. Java注解基本原理

    注解目前非常的流行,很多主流框架都支持注解,而且自己编写代码的时候也会尽量的去用注解,一时方便,而是代码更加简洁. 注解的语法比较简单,除了@符号的使用之外,它基本与Java固有语法一致.Java S ...

  5. yii2使用Gii生成代码

    本章节将介绍怎样使用 Gii 去自己主动生成 Web 网站经常使用功能的代码.使用 Gii 生成代码很easy,仅仅要依照 Gii 页面上的介绍输入正确的信息就可以. 贯穿本章节,你将会学到: 在你的 ...

  6. C#切割指定区域图片操作

    使用winform制作了一个切割图片的功能,切一些固定大小的图片,比如头像.界面如图: 打开本地图片 OpenFileDialog opdialog = new OpenFileDialog(); o ...

  7. img的onerror事件

    使用场景 其实on error使用上是比较简单的. 当我们网站上出现了无效图片,而我们希望用友好的方式告诉用户,而不是显示红叉叉. w3c上解释的 定义和用法: onerror 事件会在文档或图像加载 ...

  8. Python基础类型

    1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 names = ['Alex',"Tenglan",'Eric ...

  9. 你真的了解 console 吗

    对于前端开发者来说,在开发过程中需要监控某些表达式或变量的值的时候,用 debugger 会显得过于笨重,取而代之则是会将值输出到控制台上方便调试.最常用的语句就是console.log(expres ...

  10. CSS3 之动画及兼容性调优

    由于CSS3动画对低版本的浏览器的支持效果并不是很好,特别是IE9及以下版本,更是无法支持. 所以有时候一些简单的动画效果,还只是用js代码来实现,但是效率偏低,而且效果有些偏生硬,不够顺滑. 毕竟用 ...