zoukankan      html  css  js  c++  java
  • HDU2043 密码

    问题链接HDU2043 密码入门训练题,用C语言编写程序。

    问题简述参见上述链接。

    问题分析这个题的密码检查有两个方面,一是密码长度,二是密码至少包含三类字符。

    大写字母、小写字母和数字这三类的检查是常规检查,程序应该一看就懂。

    第四类字符的密码检查稍微有所不同,那些字符在ASCII码表中,未必是连续存放的,所以检查时稍微需要一点点小技巧。用字符指针进行字符串的处理应该是个好主意。

    程序说明(略)。

    输入密码检查是常见的问题,这回成了一道题。

    AC的C语言程序如下:

    /* HDU2043 密码 */
    
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
        int m, count, f1, f2, f3, f4, len, i;
        char s[256], t4[]="~!@#$%^", *p;
    
        scanf("%d", &m);
        while(m--) {
            // 读入字符串
            scanf("%s", s);
    
            // 密码检查
            count = 0;
            f1 = f2 = f3 = f4 = 0;
            len = strlen(s);
            if(8 <= len && len <= 16) {             // 密码长度检查
                for(i=0; i<len; i++) {
                    if('A' <= s[i] && s[i] <= 'Z')  // 第一类字符
                        f1 = 1;
                    if('a' <= s[i] && s[i] <= 'z')  // 第二类字符
                        f2 = 1;
                    if('0' <= s[i] && s[i] <= '9')  // 第三类字符
                        f3 = 1;
                    p = t4;                         // 第四类字符
                    while(*p) {
                        if(s[i] == *p) {
                            f4 = 1;
                            break;
                        }
                        p++;
                    }
    
                    count = f1 + f2 + f3 + f4;
                    if(count >= 3)
                        break;
                }
            }
    
            // 结果输出
            if(count >= 3)
                printf("YES
    ");
            else
                printf("NO
    ");
        }
    
        return 0;
    }


  • 相关阅读:
    大数据之路_1
    Echart图表设置项
    AsyncSocket
    book_.Net与设计模式
    book_精通正则表达式
    操作系统基本功能
    操作系统基础
    网络系统结构与设计的基本原则
    3.1EDA和数据描述: 探索性数据分析
    宽带城域网
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564653.html
Copyright © 2011-2022 走看看