请问过程是哪里出错了吗

img


字符串倒序,输入s1字符串,再输入它的倒序记为s2,判断如果s2是其倒序则输出true反之输出false,
我不清楚哪里出错了结果都是false

s2==b不行,要比较字符串需要用strcmp函数
如果解决您的问题,请点赞采纳,谢谢

【以下回答由 GPT 生成】

问题解答:

在这段代码中,有两个错误。

第一个错误是在第14行的循环中,你将字符s1[i]赋给数组b[j],但是你在每次循环时都没有改变j的值。这会导致数组b中的每个元素都被赋为相同的字符,即最后一个字符s1[strlen(s1) - 1]。

为了正确地将字符串s1反转存入数组b,你需要在第一个for循环外面添加一个变量,用来追踪数组b中的索引位置。你可以将其初始化为0,然后在每次循环中递增。

第二个错误是在第19行的字符串比较中。你正在比较字符串s2和数组b,但是你并没有确保数组b中的字符串已经正确地反转了s1。这是因为你没有在循环结束后添加字符串结尾的空字符'\0'。

为了修复这个错误,你可以在第一个for循环结束后,在数组b的最后一个位置添加一个空字符'\0'来表示字符串的终止。

下面是修复后的代码:

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

int main() {
    char s1[1001];
    char b[1001];
    char s2[1001];

    printf("请输入s1字符串:");
    scanf("%s", s1);

    printf("请输入s2:");
    scanf("%s", s2);

    int index = 0; // 添加一个变量用来追踪数组b的索引位置

    for(int i = strlen(s1) - 1; i >= 0; i--) {
        b[index] = s1[i]; // 将字符s1[i]赋给数组b[index]
        index++; // 递增索引位置
    }

    b[index] = '\0'; // 在数组b的最后一个位置添加空字符'\0',表示字符串的终止

    if(strcmp(s2, b) == 0) {
        printf("true");
    } else {
        printf("false");
    }

    return 0;
}

这样,将字符串s1反转后与字符串s2比较的结果将会正确。如果相等,程序将输出"true",否则输出"false"。



【相关推荐】



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