PAT乙 1081. 检查密码 (15)

本文介绍了一个用于检查网站用户注册时所设密码合法性的程序实现。该程序确保密码至少包含6个字符,且同时含有字母和数字,只允许使用英文字母、数字及小数点。通过逐个字符的检查来验证密码是否符合要求。

题目地址:PAT1081.检查密码(15)

题目介绍:

    本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点".",还必须既有字母也有数字。输入第一行给出一个正整数 N(<=100),随后 N 行,每行给出一个用户设置的密码,为不超过80个字符的非空字符串,以回车结束。

易错分析:

1.    在判断字母的时候大小写都要判断。

2.    在输入密码的时候,不能用scanf或者cin,因为这两者都会略过空格等任何空白字符。

程序:

#include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;

int isAlpha(char ch)
{
	return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');
}

int isNumber(char x)
{
	return x >= '0' && x <= '9';
}

int isPoint(char x)
{
	return x == '.';
}

int main(int argc, char const *argv[])
{
	int N;
	cin >> N;
	char ch[85];
	getchar();	// 挡回车
	while (N--)
	{	/* 判断是否有字母 数字 小数点的flag,1表示存在 */
		int flagAlpha = 0, flagNum = 0, flagLegal = 0;
		gets(ch);	// 不能用scanf或者cin,因为会跳过空格
		int len = strlen(ch);
		if (len < 6)
			cout << "Your password is tai duan le." << endl;
		else
		{
			for (int i = 0; i < len; i++)
			{	/* 判断每个字符是不是都是合法的 */
				if (isNumber(ch[i]) || isAlpha(ch[i]) || isPoint(ch[i]))
				{
					if (isNumber(ch[i]))
						flagNum = 1;
					if (isAlpha(ch[i]))
						flagAlpha = 1;
				}
				else	/* 如果出现不合法的字符 */
				{
					flagLegal = 1;
					break;	// 退出
				}
			}
			if (flagLegal)
				cout << "Your password is tai luan le." << endl;
			else if (flagAlpha && !flagNum)	/* 如果只有字母没有数字 */
				cout << "Your password needs shu zi." << endl;
			else if (flagNum && !flagAlpha)	/* 如果只有数字没有字母 */
				cout << "Your password needs zi mu." << endl;
			else if (flagAlpha && flagNum)	/* 长度符合字母数字都有 */
				cout << "Your password is wan mei." << endl;

		}

	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值