编写代码模拟三次密码输入的场景

题目:编写代码模拟三次密码输入的场景。 
最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 
可以重新输入,最多输入三次。三次均错,则提示退出程序。 


分析:题目相对简单,看完后,你可能马上会写下如下代码-->

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{

	char*password = "abcde";
	char input[1024] = { 0 };
	int i;
	printf("请输入密码:");
	for (i = 0; i < 3; i++)
	{
		scanf("%s", input);
		if (strcmp(password, input) == 0)
		{
			printf("登录成功\n");
			break;
		}
		else
		{
			printf("密码错误,请重新输入:");
		}
	}
	if (i == 3)
	{
		printf("退出\n");
	}
	system("pause");
	return 0;
}

但是这是错的,当第三次输入密码错误时,i等于2,程序会执行printf("密码错误,请重新输入:");随后i变为3,离开循环,来到条件判断语句,符合i==3,所以紧接着执行printf("退出\n");,最后结果如下

正确的方式是:在循环中进入else语句(即密码不正确时)就要判断i的范围。只有在范围内,才输出"密码错误,请重新输入:"语句,一旦第三次猜错,就要直接退出程序

正确代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{

	char*password = "abcde";
	char input[1024] = { 0 };
	//int i;
	int count = 0;
	printf("请输入密码:");
	while (count <= 3)
	{
		scanf("%s", input);
		count++;
		if (strcmp(password, input) == 0)
		{
			printf("登录成功\n");
			break;
		}
		else
		{
			if (count < 3)//这里一定要判断是否<3,因为第三次输入错误时,就应该直接退出程序,不能再输出“密码错误,请重新输入:”
			{
				printf("密码错误,请重新输入:");
			}
			else
			{
				printf("退出\n");
				break;
			}	
		}
	}
	


     //for循环书写
	/*for (i = 0; i < 3; i++)
	{
		scanf("%s", input);
		if (strcmp(password, input)==0)
		{
			printf("登录成功\n");
			break;
		}
		else
		{
			if (i < 2)
			{
				printf("密码错误,请重新输入:");
			}
			else
			{
				printf("退出\n");
				break;
			}
			
		}	
	}*/
	
	system("pause");
	return 0;
}

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值