【PTA数据结构 | C语言版】字符串比较操作

发布于:2025-07-16 ⋅ 阅读:(14) ⋅ 点赞:(0)

本专栏持续输出数据结构题目集,欢迎订阅。

文章目录

题目

请编写程序,按字典序比较两个给定的字符串 s 和 t 的大小。

输入格式:
输入两个非空字符串 s 和 t,每个字符串占一行,不超过 1000 个字符,以回车结束(回车不算在字符串内)。

输出格式:
在一行中输出按字典序比较 s 和 t 的结果:如果 s>t 则输出 1;如果 s<t 则输出 -1;如果两者相等则输出 0。

输入样例 1:

abcd
abca

输出样例 1:
1

输入样例 2:

abcd
bcde

输出样例 2:
-1

输入样例 3:

abcd
abcd

输出样例 3:
0

代码

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

#define MAX_LENGTH 10011

int compareStrings(const char* s1, const char* s2) {
    size_t len1 = strlen(s1);
    size_t len2 = strlen(s2);
    size_t minLength = len1 < len2 ? len1 : len2;
    
    // 比较对应字符
    for (size_t i = 0; i < minLength; ++i) {
        if (s1[i] != s2[i]) {
            return (int)s1[i] - (int)s2[i];
        }
    }
    
    // 如果所有对应字符都相等,则比较长度
    return (int)(len1 - len2);
}

int main() {
    char s[MAX_LENGTH], t[MAX_LENGTH];
    
    // 读取输入的两个字符串
    if (fgets(s, MAX_LENGTH, stdin) == NULL) return 1;
    if (fgets(t, MAX_LENGTH, stdin) == NULL) return 1;
    
    // 移除字符串末尾的换行符
    size_t len_s = strlen(s);
    if (len_s > 0 && s[len_s - 1] == '\n') {
        s[len_s - 1] = '\0';
    }
    
    size_t len_t = strlen(t);
    if (len_t > 0 && t[len_t - 1] == '\n') {
        t[len_t - 1] = '\0';
    }
    
    // 比较两个字符串
    int result = compareStrings(s, t);
    
    // 根据比较结果输出相应的值
    if (result > 0) {
        printf("1\n");
    } else if (result < 0) {
        printf("-1\n");
    } else {
        printf("0\n");
    }
    
    return 0;
}

网站公告

今日签到

点亮在社区的每一天
去签到