c语言设计密码检测程序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言设计密码检测程序?相关的知识,希望对你有一定的参考价值。

为账号注册模块设计一个密码检测程序,密码需要满足以下条件。
1. 密码长度6~8个字符
2. 两次输入的密码必须一致
3. 必须包含大写字母、小写字母和数字符号,也只能包含这三种符号。
程序运行时,提示用户输入密码,如果不符合以上任一要求,显示相关错误并要求用户重新输入。

参考技术A #include <stdio.h>

#define UC (1U<<1) // upper case
#define LC (1U<<2) // lower case
#define NUM (1U<<3) // 0-9

#define ALL (UC|LC|NUM)

int check(const char pass1[], const char pass2[])

const char *p = &pass1[0];
unsigned int flag = 0;

if (strlen(pass1) < 6 || strlen(pass1) > 8)

printf("password length is 6 to 8.\n");
return 1;


if (strcmp(pass1, pass2))

printf("the tow passwords are diffrence.\n");
return 2;


while (*p)

if (*p >= 'a' && *p <= 'z') flag |= LC;
else if (*p >= 'A' && *p <= 'Z') flag |= UC;
else if (*p >= '0' && *p <= '9') flag |= NUM;
else

printf("in valid charactor: %c.\n", *p);
return 3;

++p;


if (flag == ALL) return 0;

if ((flag & UC) == 0)

printf("lack of uppercase.\n");


if ((flag & LC) == 0)

printf("lack of lowercase.\n");


if ((flag & NUM) == 0)

printf("lack of number.\n");

return -1;


int main(int argc, char *argv[])

char pass1[100];
char pass2[100];

do
printf("input password:");
scanf("%s", pass1);
printf("repeat password:");
scanf("%s", pass2);
while (check(pass1, pass2) != 0);

return 0;
追问

为什么输入Ab1234然后就直接完了呀

追答

密码正确时忘记输出提示信息了,修改一下main函数,修改如下(其实就是增加了一然 printf("password is ok: %s\n", pass1);):

int main(int argc, char *argv[])

char pass1[100];
char pass2[100];
do

printf("input password:");
scanf("%s", pass1);
printf("repeat password:");
scanf("%s", pass2);

while (check(pass1, pass2) != 0);
printf("password is ok: %s\n", pass1);
return 0;

本回答被提问者采纳

基于51单片机LCD1602矩阵键盘电子密码锁proteus仿真设计

程序源码参考设计 +QQ214268650
本设计
基于51单片机LCD1602矩阵键盘密码锁proteus仿真设计

操作视频:
https://www.bilibili.com/video/BV1Xh411Y7ia

仿真图proteus 7.8/protues 8.6
程序编译器:keil 4/keil 5
编程语言:C语言
编号C10531_2

一、主要功能:
1.按键设置6位密码,输入密码若密码正确,则锁打开。显示open!
2.密码可以自己修改(6位密码),必须是锁打开时才能改密。为防止误操作,修改密码得输入两次。
3.若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。
4.24C02有复位、掉电保存密码功能。
5.液晶屏亮度会随光线自动调整。
二、按键说明:
排列方式:1 2 3 A
4 5 6 B
7 8 9 C

  • 0 # D
    ABC无定义、 *号键为取消当前操作、#号键为确认、D键为修改密码
    三、其他说明:
    1、首次使用时输入:131420,对密码进行初始化,当显示:initpassword,证明密码初始化完成,此时的密码为:000000。然后可以改密了。(如密码忘记就再输入131420初始化,然后密码就是000000了,不要告诉别人哦~~~)
    2、按下 * 键或复位键,可以关锁并退出。
    3、当输入密码错误后,报警并锁定键盘3秒钟。
    4、修改密码:在开锁状态下,再次输入正确的密码并按下 # 键,此时听到两声提示,输入新的六位密码并按 D 键,再重复输入一次新密码并按 D ,会听到两声提示音,表示重设密码成功,内部保存新密码并存储。如两次输入的新密码不一样,则重设密码失败。

仿真图(提供源文件):
在这里插入图片描述
在这里插入图片描述

程序(提供源文件源码):
在这里插入图片描述

资料清单:
在这里插入图片描述

以上是关于c语言设计密码检测程序?的主要内容,如果未能解决你的问题,请参考以下文章

C语言程序中,要检测一个数据是不是在变化着,应该怎么实现?

跪求 单片机进行温度检测的C语言程序

vs编写的c语言程序有办法检测用了多少内存吗?vc6.0也行。。

C语言程序设计--班级档案管理系统

c语言 设计一个银行管理系统

求翁恺老师的C语言程序设计he 以及进阶的百度云资源