用C编程,运用单链表判断密码是否正确

要求是:在程序中预设一个密码,用户通过键盘输入一个密码,如果输入的密码与程序中预设一致,则显示“Welcome!”。当用户输入密码时,屏幕应不回显字符,或者显示‘*’号字符;限制密码输入次数,如果用户输入的密码超过限定次数,如3次,则在3次都不正确输入之后,应退出程序。

此题可用数组或者单链表完成,数组较为简便,但是为了练习单链表的内容,此题应用链表完成。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
struct key* InputPassword(key* head, char* keyword);
typedef struct key
{
	char password;
    key* next;
};
void main()
{
	key* head = NULL;
	char keyword[7] = "123456" ;
	InputPassword(head, keyword);
	while (true)
	{

	}
}
struct key* InputPassword(key* head, char* keyword)
{
	static int count = 1;  //用于计数,当count>3之后推出程序
	key* p;  //用于开拓新节点(一位密码)
	printf("请输入6位密码\n");
	int i = 0;
	while (i != 6)
	{
		p = (key*)malloc(sizeof(key));
		p->password = _getch();
		printf("*");
		p->next = head;
		head = p;
		i++;
	}
	char judge[7] = { 0 };
	key* tphead;  //定义一个指针遍历链表将输入的一串密码赋值给judge以便比较是否与正确密码一致
	tphead = head;
	i = 5;
	while (i >= 0)
	{
		judge[i] = tphead->password ;
		i--;
		tphead = tphead->next;
	}
	if (strcmp(judge, keyword) == 0)
	{
		printf("\nWelcome!\n");
	}
	else
	{
		printf("\n密码错误\n");
		count++;
		if (count <= 3)
		{
			InputPassword(head, keyword);
		}
		else
		{
			exit(0);
		}
	}
	return head;
}
由于本人是大一初学者,代码很多地方不够优,思维逻辑可能还不够很灵活,纯粹是为了记录,让自己以后也可以回顾下。有什么做的不好的欢迎各路大佬指教!~^ . ^~


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值