PTA 1081 检查密码(测试点2)c++

很简单的一道题,先把代码给出来。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    
    
 string a;
 char sp;
 int n,m,j,k,l1,l2,l3,l4,i;
 scanf("%d",&n);
 scanf("%c",&sp);
 for(i=0;i<n;++i){
    
    
  getline(cin,a);
  l1=0,l2=0,l3=0;
  for(j=0;j<a.length();++j){
    
    
   if(!(isalnum(a[j])||a[j]=='.')) l1=1;
   else if(isalpha(a[j])) l2+=1;
   else if(isdigit(a[j])) l3+=1;
  }
  if(a.length()<6) printf("Your password is tai duan le.\n");
  else if(l1>0) printf("Your password is tai luan le.\n");
  else if(l3==0) printf("Your password needs shu zi.\n");
  else if(l2==0) printf("Your password needs zi mu.\n");
  else printf("Your password is wan mei.\n");
 }
 return 0;
}

思路之不读题了

第一点 长度不够时 这就输出 太短了
第二 每一次输入字符串时,l1 l2 l3 都等于0,用 l1 存非法字符 , l2存字母,l3存数字。
排定阶段,l1>0 输出错误,l3l2 其中一个 = = 0,输出错误。
第三点 没有任何一种错误 输出完美。

测试点2

一开始都是测试点2的问题 ,想问题想简单了,因为2出现了一个空格。
所以无法用数组 来直接存字符串。
用其他的就可以了赛,我用的是getline,每次存一行(可以存空格 )
但需要提前把 N 后面的回车提前取出来,不然第一次的密码就是一个回车。

 scanf("%c",&sp);//取出空格 回车 
 scanf(" %c",&sp);//正常读取字符。

wish you all the best.

猜你喜欢

转载自blog.csdn.net/M1170780140/article/details/104089497
今日推荐