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"。
【相关推荐】