要求是:在程序中预设一个密码,用户通过键盘输入一个密码,如果输入的密码与程序中预设一致,则显示“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;
}
由于本人是大一初学者,代码很多地方不够优,思维逻辑可能还不够很灵活,纯粹是为了记录,让自己以后也可以回顾下。有什么做的不好的欢迎各路大佬指教!~^ . ^~