C语言实现密码的设置及验证

#include <stdio.h>




/*定义密码输入函数*/
void password_set(unsigned int *passwordArrary)
{
 int enter_counter; /*定义密码输入计数器*/




 /*for循环实现密码的输入*/
 printf("请输入6位数字密码\n");
 for (enter_counter = 0; enter_counter < 6; enter_counter++)
 {
  scanf_s("%d", &passwordArrary[enter_counter]);
 }
}




/*定义check_rule函数检查输入密码是否符合密码设置规则*/
int check_rule(unsigned int *passwordArrary)
{
 int checkRule_flag;
 int checkRule_counter;




 checkRule_flag = 0;




 for (checkRule_counter = 1; checkRule_counter <= 6; checkRule_counter++)
 {
  if ((*passwordArrary) > 0 && (*passwordArrary) < 10)
  {
   checkRule_flag++;
   passwordArrary++;
  }
  else
  {
   passwordArrary++;
  }
 }




 if (checkRule_flag == 6)
 {
  return 1;
 }
 else
 {
  return 0;
 }
}




/*定义一个密码校验函数*/
int password_value_check(unsigned int *passwordArrary)
{
 unsigned int password_check[6]; /*存放再次输入的密码值*/
 int passwordCheckEnter_counter; /*循环输入密码*/
 int passwordCheck_counter; /*校验次数计数器*/
 int passwordCheck_flag; /*校验标志位*/




 passwordCheck_counter = 0;
 passwordCheck_flag = 0;




 /*再次输入密码并存如校对数组*/
 printf("请再次输入刚才设置的密码以便进行校验!\n");
 for (passwordCheckEnter_counter = 0; passwordCheckEnter_counter < 6; passwordCheckEnter_counter++)
 {
  scanf_s("%d", &password_check[passwordCheckEnter_counter]);
 }




 while (passwordCheck_counter < 6)
 {
  if ((*passwordArrary) == password_check[passwordCheck_counter]) /*判断两次密码是否相同*/
  {
   passwordCheck_flag++;
   passwordArrary++;
   passwordCheck_counter++;
  }
  else
  {
   passwordArrary++;
   passwordCheck_counter++;
  }
 }




 if (passwordCheck_flag == 6) /*判断标志位返回相应值*/
 {
  return 1;
 }
 else
 {
  return 0;
 }
}




int main()
{
 unsigned int passwordArrary[6]; /*定义一个存放密码的数组*/
 unsigned int *password_set_return;
 int check_rule_flag; /*定义密码规则检查返回标识位*/
 int check_value_flag; /*设定密码校验标志位*/
 int set_counter; /*定义密码设置计数器*/
 int check_counter; /*定义密码校验计数器*/




 set_counter = 1;
 check_counter = 1;




 password_set(passwordArrary);




 /*利用check_rule函数检查输入的函数是否符合密码设置规则*/
 check_rule_flag = check_rule(passwordArrary);
 while (check_rule_flag == 0 && set_counter <= 5)
 {
  set_counter++;
  printf("您输入的密码不符合规格,请重新输入6位0~9之间的密码\n");
  password_set(passwordArrary);
  check_rule_flag = check_rule(passwordArrary);
 }
 if (set_counter > 5)
 {
  printf("密码设置已经超过规定次数!\n");
 }
 else
 {
  check_value_flag = password_value_check(passwordArrary);
  while (check_value_flag == 0 && check_counter <= 5)
  {
   check_counter++;
   check_value_flag = password_value_check(passwordArrary);
  }
  if (check_counter > 5)
  {
   printf("输入错误次数超过5次,登陆失败!\n");
  }
  else
  {
   printf("密码校验成功!\n");
  }
 }




 return 0;
}

  • 13
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值