首页 > 其他分享 >PAT Basic 1067. 试密码

PAT Basic 1067. 试密码

时间:2023-04-03 19:25:17浏览次数:46  
标签:尝试 PAT 1067 密码 Wrong Basic gplt password 输入

PAT Basic 1067. 试密码

1. 题目描述:

当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死。本题就请你实现这个小功能。

2. 输入格式:

输入在第一行给出一个密码(长度不超过 20 的、不包含空格、Tab、回车的非空字符串)和一个正整数 N(≤ 10),分别是正确的密码和系统允许尝试的次数。随后每行给出一个以回车结束的非空字符串,是用户尝试输入的密码。输入保证至少有一次尝试。当读到一行只有单个 # 字符时,输入结束,并且这一行不是用户的输入。

3. 输出格式:

对用户的每个输入,如果是正确的密码且尝试次数不超过 N,则在一行中输出 Welcome in,并结束程序;如果是错误的,则在一行中按格式输出 Wrong password: 用户输入的错误密码;当错误尝试达到 N 次时,再输出一行 Account locked,并结束程序。

4. 输入样例:

Correct%pw 3
correct%pw
Correct@PW
whatisthepassword!
Correct%pw
#
cool@gplt 3
coolman@gplt
coollady@gplt
cool@gplt
try again
#

5. 输出样例:

Wrong password: correct%pw
Wrong password: Correct@PW
Wrong password: whatisthepassword!
Account locked
Wrong password: coolman@gplt
Wrong password: coollady@gplt
Welcome in

6. 性能要求:

Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB

思路:

除草题,用户输入正确的密码或是输入“#”或是达到允许尝试次数时程序结束。

有几个点需要注意。首先是用户的密码只保证以回车结束,可能含有空白字符,所以不能使用scanf()读入,需要用fgets()读入。然后就是需要用getchar()消耗掉允许尝试次数后面的换行符'\n',以使得第一个用户输入正常读入。还有就是fgets()会把换行符也读入,所以这里需要额外把换行符替换为空字符'\0',以方便strcmp()正常比较。题目没有说明用户输入的字符串长度上限,这里我直接取了一个较大的数100。

My Code:

#include <stdio.h>
#include <string.h> // strcmp header

int main(void)
{
    char correctPass[21] = "";
    int maxTry = 0;
    char userInput[100] = "";
    int i=0; // iterator
    int correctFlag = 0;
    
    scanf("%s%d", correctPass, &maxTry);
    getchar(); // consume '\n' to get correct input
    
    for(i=0; i<maxTry; ++i)
    {
        //fgets(char * s, int size, FILE * stream);
        fgets(userInput, 100, stdin);
        userInput[strlen(userInput)-1] = '\0'; // must delete '\n' for strcmp
        
        if(!strcmp(userInput, "#")) // input over
        {
            break;
        }
        else if(!strcmp(userInput, correctPass)) // correct password
        {
            correctFlag = 1;
            printf("Welcome in\n");
            break;
        }
        else // wrong password
        {
            //printf("Wrong password: %s", userInput); // can't add '\n' because fgets() will input a '\n'.
            printf("Wrong password: %s\n", userInput);
        }
    }
    if(i==maxTry && !correctFlag)
    {
        printf("Account locked\n");
    }
    
    
    return 0;
}

标签:尝试,PAT,1067,密码,Wrong,Basic,gplt,password,输入
From: https://www.cnblogs.com/tacticKing/p/17284077.html

相关文章

  • powershell path
    https://github.com/ThePoShWolf/Utilities/blob/master/Misc/Set-PathVariable.ps1<#.SYNOPSIS ModifythePATHenvironmentvariable..DESCRIPTION Set-PathVariableallowsyoutoaddorremovepathstoyourPATHvariableatthespecifiedscopewithlogic......
  • PAT Basic 1066. 图像过滤
    PATBasic1066.图像过滤1.题目描述:图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来。现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换。2.输入格式:输入在第一行给出一幅图像的分辨率,即两个正整数 \(M\) 和 ......
  • PAT甲级真题1020.树的遍历
    翻译和代码思路:Acwing一个二叉树,树中每个节点的权值互不相同。现在给出它的后序遍历和中序遍历,请你输出它的层序遍历。输入格式第一行包含整数N,表示二叉树的节点数。第二行包含N个整数,表示二叉树的后序遍历。第三行包含N个整数,表示二叉树的中序遍历。输出格式输出一......
  • PAT Basic 1064. 朋友数
    PATBasic1064.朋友数1.题目描述:如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如123和51就是朋友数,因为1+2+3=5+1=6,而6就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。2.输入......
  • PAT Basic 1063. 计算谱半径
    PATBasic1063.计算谱半径1.题目描述:在数学中,矩阵的“谱半径”是指其特征值的模集合的上确界。换言之,对于给定的\(n\)个复数空间的特征值\({a_1+b_1i,⋯,a_n+b_ni}\),它们的模为实部与虚部的平方和的开方,而“谱半径”就是最大模。现在给定一些复数空间的特征值,请你计算......
  • path()方法函数定义
    path()方法函数定义path函数在Django中的的定义如下所示:path(route,view,kwargs,name)它可以接收4个参数,其中前两个是必填参数后两个为可选参数。参数解析如下:1.routeroute是一个匹配URL的准则(类似正则表达式)。当Django响应一个请求时,它会从urlpatterns的第......
  • xpath语法的使用(以selenium为例)
    """xpath定位1.路径选择/表示根节点/html表示选择根节点下的html节点/html/body/div表示选择根节点下的html节点下面的body节点下面的div节点//div/p选择所有div下的直接子节点p元素//div//p选择所有div下的所有p元素//div/2.属性选择[@属性名="属性值"......
  • PAT Basic 1062. 最简分数
    PATBasic1062.最简分数1.题目描述:一个分数一般写成两个整数相除的形式:\(N/M\),其中\(M\)不为0。最简分数是指分子和分母没有公约数的分数表示形式。现给定两个不相等的正分数\(N_1/M_1\)和\(N_2/M_2\),要求你按从小到大的顺序列出它们之间分母为\(K\)的最简分数。2.......
  • PAT Basic 1061. 判断题
    PATBasic1061.判断题1.题目描述:判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。2.输入格式:输入在第一行给出两个不超过100的正整数N和M,分别是学生人数和判断题数量。第二行给出M个不超过5的正整数,是每道题的满分值。第三......
  • selenium使用css selector和xpath的比较
    selenium提供的定位方式(常用)推荐的定位方式的优先级   优先级最高:ID   优先级其次:name   优先级再次:CSSselector   优先级再次:Xpath针对cssselector和xpath的优先级做一个简单的说明在项目中我们可能用的最多的是css或者xpath,那么针对这两种,我们优先选择css,原......