C語言字符串對比

寫在前面:這裏是小王成長日誌,一名在校大學生,想在學習之餘將自己的學習筆記分享出來,記錄自己的成長軌跡,幫助可能需要的人。歡迎關注與留言。

題目:

題目鏈接:https://www.dotcpp.com/oj/problem1466.html

題目 1466: [藍橋杯][基礎練習VIP]字符串對比

時間限制: 1Sec 內存限制: 512MB 提交: 3992 解決: 2434

題目描述
給定兩個僅由大寫字母或小寫字母組成的字符串(長度介於1到10之間),它們之間的關係是以下4中情況之一:

1:兩個字符串長度不等。比如 Beijing 和 Hebei

2:兩個字符串不僅長度相等,而且相應位置上的字符完全一致(區分大小寫),比如 Beijing 和 Beijing

3:兩個字符串長度相等,相應位置上的字符僅在不區分大小寫的前提下才能達到完全一致(也就是說,它並不滿足情況2)。比如 beijing 和 BEIjing

4:兩個字符串長度相等,但是即使是不區分大小寫也不能使這兩個字符串一致。比如 Beijing 和 Nanjing

編程判斷輸入的兩個字符串之間的關係屬於這四類中的哪一類,給出所屬的類的編號。
輸入
包括兩行,每行都是一個字符串
輸出
僅有一個數字,表明這兩個字符串的關係編號
樣例輸入
BEIjing
beiJing
樣例輸出
3

C語言解法

題目看着長,實際上就是求三個數的最小公倍數

#include <stdio.h>
#include <string.h>

int main()
{
    char a[20], b[20];
    scanf("%s %s", &a, &b);
    int lena, lenb;
    lena = strlen(a), lenb = strlen(b);
    if (lena != lenb)
    {
        printf("1");
        return 0;
    }
    else
    {
        int flag = strcmp(a, b);
        if (flag == 0)
        {
            printf("2");
            return 0;
        }
        else
        {
            int m = judge(a, b, lena);
            if (m == 1)
            {
                printf("3");
                return 0;
            }
            else
            {
                printf("4");
                return 0;
            }
        }
    }
}

int judge(char *a, char *b, int len)
{
    int judg = 1;
    for (int i = 0; i < len; i++)
    {
        char aa = *(a++), bb = *(b++);
        if (aa != bb && aa != (bb - 32) && aa != (bb + 32))
        {
            judg = 0;
            break;
        }
    }
    return judg;
}

或者judge函數可以寫成如下形式

int judge(char *a, char *b, int len)
{
    int judg = 1;
    for (; *a != *b && *a != (*b - 32) && *a != (*b + 32) && *a != '\0'; a++, b++)
        judg = 0;
    return judg;
}

都看到這裏了,各位哥哥姐姐叔叔阿姨給小王點個贊 關個注 留個言吧,和小王一起成長吧,你們的關注是對我最大的支持。
有事沒事進來看看吧 : 小王的博客目錄索引
C語言專欄看這 : C語言學習專欄


如果以上內容有任何不準確或遺漏之處,或者你有更好的意見,就在下面留個言讓我知道吧-我會盡我所能來回答。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章