1067. 试密码(20)
2017-11-26 10:34
197 查看
原题: https://www.patest.cn/contests/pat-b-practise/1067
思路: 又是一题重点放在怎么读入数据的问题, 我采用的是这种
%[^\n],
题目没有说明用户输入的密码最大有多长, 本来我是想采用读取前21个字符
这种操作来判断的, 但测试点无法通过, 索性直接开个500位的大数组完事,
主要就是把以下特殊情况考虑到了, 就没问题了.
- 用户的输入长度不定
- 一个#是结束, 2个##就不是了. 遇到#立马就结束程序, 不要打印回车
- 用户的输入中间可能有空格之类乱七八糟的字符, 不能用scnaf直接读取
- 这一题不能采用截断的方法只读取前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("%[^\n]", upwd); getchar(); // 回车挡掉 if (count == 0) { printf("Account locked\n"); break; // 尝试次数为0结束 } else if (strcmp(upwd, "#") == 0) { break; // 读到#结束 } else if (strcmp(upwd, rpwd) == 0) { printf("Welcome in\n"); break; // 密码正确结束 } else { printf("Wrong password: %s\n", upwd); count--; } } return 0; }
相关文章推荐
- PAT 乙级 1067.试密码(20)
- 1067. 试密码(20)
- 1067.试密码(20)
- [PAT乙级]1067. 试密码(20)
- PAT Basic 1067. 试密码(20)(C语言实现)
- 1067. 试密码(20)
- 1067. 试密码(20) python篇
- pat 乙级 1067. 试密码(20)
- 1067. 试密码(20)
- PAT 1067. 试密码(20)
- 1067. 试密码(20)
- PAT (Basic Level) Practise (中文) 1067. 试密码(20)
- 1067. 试密码(20)
- 1067. 试密码(20)
- 1067. 试密码(20)
- 1067. 试密码(20)
- PAT乙级 1067. 试密码(20)
- 1067. 试密码(20)
- [pattest]1067. 试密码(20)
- 1067. 试密码(20) PAT乙级真题