zoukankan      html  css  js  c++  java
  • 计蒜客 —— 字符串判等问题

    题目地址

    本题的测试数据有点bug,表述不清晰

    详情可以见 提问

    题目信息:

     第一种方法:

    #include<stdio.h>
    #include<string.h>
    char aa[110];
    char b[110];
    char c[110];
    int main(){
    
        char a;
        int i =0;
        while( (a = getchar()) != '
    '){
            if (a == ' ')
                continue;
            if(a >= 65 && a <= 90){
                a = a + 32;
            }
            aa[i] = a;
            i++;
        }
        aa[++i] = '';
    
        gets(b);
        int bl = strlen(b);
        int j = 0;
    
        for(i = 0;i < bl;i++){
             if (b[i] == ' ')
                continue;
            if(b[i] >= 65 && b[i] <= 90){
                b[i] = b[i]+ 32;
            }
            c[j] = b[i];
            j++;
    
        }
    
        int x = strcmp(c,aa);
        if(x == 0)
            printf("YES");
        else
            printf("NO");
        return 0;
    }

    分析题目,第一行末尾 一定义有换行符 ' ',故可以不断 getchar() 读入一个字符,以该字符是否为 ' ' 作为结束标志。

    每次读入字符,当该字符为 空格时跳过,为大写字母时,加32变为相应的小写字母存入缓冲字符串。

    第二行,一个 gets()  函数即可读入一行数据【因为输入序列的末尾可能是 ' ' ,也可能没有】,所以一次性读入完事

    再利用for循环不断遍历,重复第一行数据输入时的一系列判定操作,将结果存入缓冲字符串。最后将两个缓冲字符串利用函数 strcmp() 比较,完事

    # gets() 函数已经废弃掉了,但暂时找不到 C语言中 如何输入 末尾不含‘ ’的含有空格的一行数据

    scanf("%[^ ]" , str)   输入一行数据包括空格,直到遇到换行符 ' '

    # c++ 中可以 cin.getline(a,100)   将一行序列存入a中,且最大字符数为 100,就可以实现输入 末尾不含‘ ’的含有空格的一行数据

    第二种方法:

    #include<stdio.h>
    #include<string.h>
    char aa[110];
    char b[110];
    int main(){
        char a;
        int i =0;
        while( (a = getchar()) != '
    '){
            if (a == ' ')
                continue;
            if(a >= 65 && a <= 90){
                a = a + 32;
            }
            aa[i] = a;
            i++;
        }
        aa[++i] = '';
        i = 0;
         while( (a = getchar()) != EOF && a != '
    '){
            if (a == ' ')
                continue;
            if(a >= 65 && a <= 90){
                a = a + 32;
            }
            b[i] = a;
            i++;
        }
        b[++i] = '';
        int x = strcmp(aa,b);
        if(x == 0)
            printf("YES");
        else
            printf("NO");
        return 0;
    }

    原理差不多~

  • 相关阅读:
    c++ 优化的动态数组 Vector
    C++ 重载赋值运算符
    k8s中引入外部服务
    MySQL----mysql_secure_installation 安全配置向导
    elk参考连接
    限制不同的用户操作k8s的资源
    tcpdump 抓包命令使用教程
    日志管理——rsyslog、logrotate
    lsyncd配置文件详细说明
    Systemd 服务配置文件(转载)
  • 原文地址:https://www.cnblogs.com/expedition/p/11581581.html
Copyright © 2011-2022 走看看