zoukankan      html  css  js  c++  java
  • 假期编程

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/12299313.html

    1.汉字统计(15min)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2030

    Problem Description
    统计给定文本文件中汉字的个数。
    Input
    输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本。
    Output
    对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。
    [Hint:]从汉字机内码的特点考虑~
    Sample Input
    2
    WaHaHa! WaHaHa! 今年过节不说话要说只说普通话WaHaHa! WaHaHa!
    马上就要期末考试了Are you ready?
    Sample Output
    14
    9
    题解:
            方法:汉字占两个字节,肯定不在ASCII内。
            思路:定义一个字符数组接收输入的字符,对每个字符进行判断,如果字符不在0~255之间即为汉字。
    代码如下:
    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<string.h>
    int main(void)
    {
           int str;
           int n;
           scanf("%d",&n);
           getchar();
           while(n>0)
           { 
            int count=0;
            int i;
            char c[1000];
            gets(c);
            str=strlen(c);
            for(i=0;i<str;i++)
            {
                if(c[i]<0||c[i]>255)
                    count++;
            }
            printf("%d\n",count/2); 
            n--;        
            }
      
        return 0;
        
    }

     2.密码(27min)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2043

    Problem Description

    网上流传一句话:"常在网上飘啊,哪能不挨刀啊~"。其实要想能安安心心地上网其实也不难,学点安全知识就可以。

    首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:

    (1).密码长度大于等于8,且不要超过16。
    (2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。

    这四个字符类别分别为:
    1.大写字母:A,B,C...Z;
    2.小写字母:a,b,c...z;
    3.数字:0,1,2...9;
    4.特殊符号:~,!,@,#,$,%,^;
    给你一个密码,你的任务就是判断它是不是一个安全的密码。
    Input
    输入数据第一行包含一个数M,接下有M行,每行一个密码(长度最大可能为50),密码仅包括上面的四类字符。
    Output
    对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出YES,否则输出NO。
    Sample Input
    3
    a1b2c3d4
    Linle@ACM
    ^~^@^@!%
    Sample Output
    NO
    YES
    NO
     题解:
             方法:1.密码长度大于16小于8的就不是安全密码。
                        2.密码长度对了,但是密码不是由题目给的四组类型中至少三种组成的不是安全密码。
             思路:
                     定义一个数组接收输入的字符,先判断密码长度是否符合要求,不符合要求就不是安全密码,定义四个count计算有多少种类型,最后把四种类型数求和,看是否大于等于3,是即是安全密码。
              注意:当那种类型数大于0时,最后求和之前把那种类型赋值为1,因为求和求的是有几种类型,不是每种类型种有多少个。
    代码如下:
    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<string.h>
    int main(void)
    {
           
           int k;
           int str;
           int n;
           scanf("%d",&n);
           getchar();
           while(n>0)
           { 
            int flag=1;
            int count1=0;
            int count2=0;
            int count3=0;
            int count4=0;
            int sum=0;
            
            char c[100];
            gets(c);
            str=strlen(c);
            if(str>=8&&str<=16)
            {
                for(k=0;k<str;k++)
                {
                    if(c[k]>='a'&&c[k]<='z')
                    {
                        flag=1;
                        count1++;
                    }
                    else if(c[k]>='A'&&c[k]<='Z')
                    {
                        flag=1;
                        count2++;
                    }
                    else if(c[k]>='0'&&c[k]<='9')
                    {
                        flag=1;
                        count3++;
                    }
                    else if(c[k]=='~'||c[k]=='!'||c[k]=='@'||c[k]=='#'||c[k]=='$'||c[k]=='%'||c[k]=='^')
                    {
                        flag=1;
                        count4++;
                    }
                    else
                    {
                         flag=0;
                         break;
                    }
                       
                }
                
            }  
            else 
                flag=0; 
            if(count1!=0)
                count1=1;
            if(count2!=0)
                count2=1;
            if(count3!=0)
                count3=1;
            if(count4!=0)
                count4=1;
            sum=count1+count2+count3+count4;    
            if(flag==1)
            {
                if(sum>=3)
                    printf("YES\n");
                else
                    printf("NO\n") ;
            }
            
            if(flag==0) 
                printf("NO\n"); 
            n--;        
            }
      
        return 0;
        
    }
    出来混总是要还的
  • 相关阅读:
    SmartDb代码修改
    windows下Nginx+RTMP部署
    嵌入式linux下获取flash分区大小
    (转)Qt添加windows开机自启动
    (转)交叉编译lrzsz
    关于海思SDK在Ubuntu下安装错误问题
    电总协议串口调试助手
    使用git将本地仓库上传到远程仓库(转)
    c++中包含string成员的结构体拷贝导致的double free问题
    59. 可变参数
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/12299313.html
Copyright © 2011-2022 走看看