【每日C语言】模拟用户登录情景,实现简单密码功能
问题分析:
模拟用户登录情景,实现简单密码功能;只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序;
解决过程:
1、定义两个数组 arr1、arr2,分别存放原始设定密码、用户输入密码;
2、密码比对阶段;
3、若比对成功;则打印“登录成功”,若比对失败,则打印比对失败;
4、判断是否三次输入失败,退出程序
运行环境:
Visual Studio 2022
运行代码:
代码一:
密码输入模式 -> 输入1个字符,1个空格,再输入一个字符,一个空格(循环6遍)
#include #include int main(){int arr1[6] = { 1,2,3,4,5,6 };int arr2[6] = { 0 };int i = 0;int k = 0;int t = 1; //记录登录失败次数while (t <= 3){for (i = 0; i < 6; i++){scanf("%d", &arr2[i]);}getchar(); //处理'\n'k = 0;for (i = 0; i < 6; i++){if (arr1[i] == arr2[i]){k++;}else{t++;if (t <= 3)printf("登录失败\n");break;}}if (k == 6 && t 3){printf("已累计三次密码错误,实现报警\n");}return 0;}
代码二:
密码输入模式 -> 直接输入6个字符,不用输入空格
#include #include int main(){char arr1[6] = "123456" ;char arr2[6] = "000000" ;int i = 0;int k = 0;int t = 1; //记录登录失败次数while (t <= 3){scanf("%s", arr2);k = 0;for (i = 0; i < 6; i++){if (arr1[i] == arr2[i]){k++;}else{t++;if (t <= 3)printf("登录失败\n");break;}}if (k == 6 && t 3){printf("已累计三次密码错误,实现报警\n");}return 0;}
代码三:
密码输入模式 -> 直接输入6个字符,不用输入空格,并简化算法
#include #include int main(){int i = 0; //记录登录失败次数char password[20] = { 0 };for (i = 0; i ");scanf("%s", password); //此处的数组名 password 代表指针,存放地址,故不用加'&'if (strcmp(password, "123456") == 0) //两个字符串比较,不能用==,应该使用strcmp()函数{printf("登录成功\n");break;}else{printf("登录失败\n");}}if (i == 3){printf("三次密码均错误,退出程序\n");}return 0;}