题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805261217153024

测试点二,日常坑,有个空格,改成getline才行

代码

  1. #include<cctype>
  2. #include<cstdio>
  3. #include<iostream>
  4. #include<string>
  5. using namespace std;
  6. int main(){
  7. int n;
  8. string str;
  9. scanf("%d", &n);
  10. getchar();
  11. for(int i = 0; i < n; i++){
  12. bool s1 = false, s2 = false, s3 = false;//s1代表有非法字符,s2代表有字母,s3代表有数字
  13. getline(cin, str);
  14. if(str.size() < 6){
  15. printf("Your password is tai duan le.\n");
  16. continue;
  17. }
  18. for(int j = 0; j < str.size(); j++){
  19. if(!(isalnum(str[j]) || str[j] == '.')){
  20. printf("Your password is tai luan le.\n");
  21. s1 = true;
  22. break;
  23. } else {
  24. if(s2 == false && isalpha(str[j])) s2 = true;
  25. if(s3 == false && str[j] <= '9' && str[j] >= '0') s3 = true;
  26. }
  27. }
  28. if(s1 == false && s2 == false) printf("Your password needs zi mu.\n");
  29. else if(s1 == false && s3 == false) printf("Your password needs shu zi.\n");
  30. else if(s1 == false && s2 && s3) printf("Your password is wan mei.\n");
  31. }
  32. }