zoukankan      html  css  js  c++  java
  • 1067. 试密码(20)

    原题: https://www.patest.cn/contests/pat-b-practise/1067

    思路: 又是一题重点放在怎么读入数据的问题, 我采用的是这种%[^ ],
    题目没有说明用户输入的密码最大有多长, 本来我是想采用读取前21个字符
    这种操作来判断的, 但测试点无法通过, 索性直接开个500位的大数组完事,
    主要就是把以下特殊情况考虑到了, 就没问题了.

    1. 用户的输入长度不定
    2. 一个#是结束, 2个##就不是了. 遇到#立马就结束程序, 不要打印回车
    3. 用户的输入中间可能有空格之类乱七八糟的字符, 不能用scnaf直接读取
    4. 这一题不能采用截断的方法只读取前20个字符, 因为即便是错误的密码
      也要全部读取出来, 不然后面输出无法输出

    实现:

    #include <stdio.h>
    #include <string.h>
    #define LEN 21
    
    int main (void) {
        char rpwd[LEN]; // 正确密码
        char upwd[500]; // 用户输入密码
        int count;      // 可尝试次数
    
        scanf("%s %d", rpwd, &count);
        getchar(); // 回车挡掉
    
        while (1) {
            scanf("%[^
    ]", upwd);
            getchar(); // 回车挡掉
            if (count == 0) {
                printf("Account locked
    ");
                break; // 尝试次数为0结束
            } else if (strcmp(upwd, "#") == 0) {
                break; // 读到#结束
            } else if (strcmp(upwd, rpwd) == 0) {
                printf("Welcome in
    ");
                break; // 密码正确结束
            } else {
                printf("Wrong password: %s
    ", upwd);
                count--;
            }
        }
    
        return 0;
    }
    
    
  • 相关阅读:
    c# 移动winform窗体
    C# 通过反射动态创建对象的方法
    C# listView用法
    C# PropertyGrid总结
    C# 静态或动态调用C++动态链接库dll
    C# 加载C++创建的动态链接库dll
    C# 动态加载dll(.net)示例
    C# 关于泛型
    C# 中的指针使用
    C/S与B/S的区别
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7898417.html
Copyright © 2011-2022 走看看