找出添加字母程序捉虫

img


给定两个字符串s,t
t是s随机重拍,然后在随机位置添加一个字母,找出这个字母
过程出问题了找不出来

重拍是什么意思?
if (strcmp(m[i],n[i])!=0)
->
m[i] != n[i]

【以下回答由 GPT 生成】

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

int main() {
    char m[100];
    char n[100];
    printf("请输入字符串m:");
    fgets(m, sizeof(m), stdin);
    printf("请输入字符串n:");
    fgets(n, sizeof(n), stdin);

    int m_count[26] = {0}; // 用于统计字符串m中每个字母的出现次数
    int n_count[26] = {0}; // 用于统计字符串n中每个字母的出现次数

    // 统计字符串m中每个字母的出现次数
    for (int i = 0; i < strlen(m); i++) {
        if (m[i] >= 'a' && m[i] <= 'z') {
            m_count[m[i] - 'a']++;
        }
    }

    // 统计字符串n中每个字母的出现次数
    for (int i = 0; i < strlen(n); i++) {
        if (n[i] >= 'a' && n[i] <= 'z') {
            n_count[n[i] - 'a']++;
        }
    }

    // 在字符串n中找到添加的字母
    for (int i = 0; i < 26; i++) {
        if (m_count[i] != n_count[i]) {
            printf("添加的字母是:%c\n", i + 'a');
        }
    }
    return 0;
}

代码修复的步骤如下: 1. 使用fgets()函数代替gets()函数读取输入的字符串m和n。fgets()函数可以避免缓冲区溢出的问题。 2. 新建两个整型数组m_countn_count来统计字符串m和n中每个字母的出现次数。数组大小为26,用于存储26个小写字母。 3. 使用循环遍历字符串m和n,如果字符是小写字母,则将相应字母的出现次数加1。 4. 在最后的循环中,对比两个数组m_countn_count的每个元素,如果不相等,则找到了添加的字母,输出结果。

这个修复后的程序可以正确地找出添加的字母。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^