牛客OR141 密码检查

  1. 思路分析

  1. 代码实现和步骤分析

  1. 代码优化

思路分析:

首先是对于这道题目的思路分析,先看输入描述,是根据n来判断密码有多少行,所以肯定要运用到了循环,其次,根据要求,密码中只能出现大写、小写、数字。根据这点我们可以判断出应该要运用到ascii码值,创建char类型的数组运用ascii码值判断是否满足条件

代码实现:

步骤讲解:首先运用多组输入,利用scanf的返回值实现while循环

这里提一下~scanf(“%d”,&n)的原理,scanf成功读取后的返回值是输入的个数,在本题目的用法中,如果是正常输入返回的是1,如果异常则返回EOF,在vs也就是-1,而对-1进行整体取反就是0,则退出while循环

接着分析每一步,因为是n行,所以我们采用循环n次来实现,每次循环内创建一个数组arr

用来接收密码

接着直接判断密码第一位是否为数字,运用ascii码值来判断,如果是数字,直接打印NO,接着continue再次循环

第二步判断数组长度

这一步最为简单直接strlen判断,同理不满足打印NO再continue

第三步是整个代码中比较难想的地方吗,首先就是循环条件,arr[j]!='\0',因为我们要判断整个字符串,所以用‘\0’来停止。在循环内部,我们来实现要求3,也就是只有数字和字母,这里定义了三个变量count,count1,count2,如果大于0赋值为1,如果三个相加小于2则不满足条件,continue。

最后所有要求都满足则打印YES

代码优化:

主要是后半部分,将赋值为1的操作删除,直接改为判断是否为真,为真则为1这种形式,这样使代码简洁了点,然后为了要求三,直接再来一个else,如果有数字,字母以外情况出现,则++一下,最后判断是否为0即可。

这道题目就到此为止啦,希望uu们能写出更加简洁的代码。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我真的很困1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值