【课上OJ】判断密码强度
一个判断密码强度问题:
假设允许采用以下四类字符作为密码:
(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里面的每类至少有两个不同的字符,若想实现此功能可以定义多个数组。
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】判断密码强度的更多相关文章
- Js判断密码强度并显示提示信息
用javascipt实现的Ajax判断密码强弱的功能,大多数有用户注册功能的网站,都会有这么一个功能,作为WEB程序员,应该会写这种小模块哦,不懂的就看下这个例子,觉得挺简单,当初帮助了不少人学会了密 ...
- js判断密码强度是否符合
/** 判断密码强度是否符合 */ function check_passwd_intensity(password) { value = $.trim(password); if( value.le ...
- JavaScript判断密码强度
以下是代码: <html> <head> <title>JS判断密码强度</title> <script language=javascript& ...
- js判断密码强度
html代码: <form name="form1" action=""> 密码:<input type="password&quo ...
- js动态判断密码强度&&实用的 jQuery 代码片段
// 网上拷贝的代码,效果不太好需要自己调整<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...
- 【课上OJ】掉入陷阱的数
对任意一个自然数N0,先将其各位数字相加求和,再将其和乘以3后加上1,变成一个新自然数N1,然后对N1重复这种操作,可以产生新自然数N2,多次重复这种操作运算,运算结果最终会得到一个固定不变的数Nk, ...
- PHP 判断密码强度
$score = 0; if(preg_match("/[0-9]+/",$str)) { ...
- php判断密码强度函数
其实就是一些策略正则,写好了就留下来以后用. print_r(getPasswordStrength('s1212adsddfASD;\'g;\'gh.h,h..;')); function getP ...
- 利用JavaScript来实现用动态检验密码强度
平时我们会在某些网站的注册页面或者更改密码的页面发现当我们输入密码时,会有一个类似于进度条的长条进行提示用户输入的密码强度.如下图: 我看到有些人用几张不同的图片来替换,这样似乎可以,但是不太好.所以 ...
随机推荐
- BZOJ 1011 [HNOI2008]遥远的行星
1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 2559 Solved ...
- 【转】探讨android更新UI的几种方法----不错
原文网址:http://www.cnblogs.com/wenjiang/p/3180324.html 作为IT新手,总以为只要有时间,有精力,什么东西都能做出来.这种念头我也有过,但很快就熄灭了,因 ...
- Notepad++去除代码行号的几种方法
Notepad++去除代码行号的几种方法 (转自:http://hi.baidu.com/beer_zh/item/e70119309ee587f2a8842892)问:在网页中复制代码时,常常遇到高 ...
- 矢量做图组件OTGisX的使用(类似Mapbase)
一:组件添加到工具栏 要在应用程序中应用OTGisX控件,首先要把所下载的OTGisX组件添加到.Net工程中.并将其添加到工具箱托盘中.添加方式为:在工具箱上单击右键,选择“选择项”,会出现“选择工 ...
- Hbase与RDBMS
hbase与传统关系数据库区别 hbase适合于非结构化数据存储的数据库.介于Map Entry 和 DB row之间的一种数据存储方式. 1. 数据类型: HBase只有简单的字符串类型,它只保存字 ...
- ACM中Java的应用
先说一下Java对于ACM的一些优点吧: (1) 对于熟悉C/C++的程序员来说Java 并不难学,两周时间基本可以搞定一般的编程,再用些时间了解一下Java库就行了.Java的语法和C++非常类似, ...
- 学做酷炫有爱的免费网页,学习 Github Page 教你分分钟搭建自己的博客
Github Page 网页搭建教程,教你分分钟搭建自己的博客 很多其它美丽的网页搭建教程教程.请看这里:http://www.duobei.com/course/8506331668 waterma ...
- Linux应用程序打包
原文地址:http://blog.solrex.cn/articles/packaging-1-src.html1. 应用程序打包技术之一(源代码篇) 相信很多朋友都曾经为方便做某件事写过自己的小 ...
- Js 正则表达式知识测试
本文对javascript中正则表达式进行了总结汇总,将知识点和注意点都理了一下,并附上2个练习题,供大家参考学习. 正则表达式: 1.什么是RegExp?RegExp是正则表达式的缩写.RegExp ...
- Java基础知识强化27:Object类之toString()方法
1. Object类的toString()方法: public String toString():返回该对象的字符串表示 2. 案例演示: (1)Student类: package cn.itc ...