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;
    }

    原理差不多~

  • 相关阅读:
    java javax.annotation.Resource注解的详解
    Struts2注解详解
    HDU 5074-Hatsune Miku(DP)
    Mac下配置Cocos2d-x3.1环境
    POJ 2109 Power of Cryptography
    Swift编程语言学习10—— 枚举属性监视器
    解决:Determining IP Information for eth0 一直停留 无法进入系统
    Bootstrap之表格
    创建和关联内容数据库到指定Web应用程序和站点集
    Ucan23操作系统项目地址
  • 原文地址:https://www.cnblogs.com/expedition/p/11581581.html
Copyright © 2011-2022 走看看