为什么最后结果是反转失败啊,不知道哪个步骤错了
```c
#include
#include
char s[20] = "I have a apple"; // 原始数组
char s_new[20]; // 用于存储翻转后的新数组
char array[20] = "elppa a evah I"; // 用于验证答案的数组
//请在该注释语句下方完成fun函数的定义
void fun(char a[],int len)
{
for (int i = 0; i < len/2; i++)
{
int t = a[i];
a[i] = a[len - i - 1];
a[len - i - 1] = t;
}
}
int main()
{
int len = strlen(s);
fun(s, len);
/*
将修改后的数组s_new与答案数组array作比较,
如果一致,则返回0,表示原数组s中所有字符已翻转
*/
int num = strcmp(s_new, array);
if (num == 0) {
printf("数组翻转成功");
}
else {
printf("数组翻转失败");
}
return 0;
}
```
方案来自 梦想橡皮擦 狂飙组基于 GPT 编写的 “程秘”
在你的代码中,你使用了一个叫做s_new的新数组,但在fun函数中却没有对其进行赋值,因此strcmp比较的是未定义的数据,导致比较结果错误。你需要在fun函数中对s_new进行赋值。修改后的代码如下:
#include <stdio.h>
#include <string.h>
char s[20] = "I have a apple"; // 原始数组
char s_new[20]; // 用于存储翻转后的新数组
char array[20] = "elppa a evah I"; // 用于验证答案的数组
//请在该注释语句下方完成fun函数的定义
void fun(char a[],int len)
{
for (int i = 0; i < len/2; i++)
{
int t = a[i];
a[i] = a[len - i - 1];
a[len - i - 1] = t;
}
strcpy(s_new, a);
}
int main()
{
int len = strlen(s);
fun(s, len);
/*
将修改后的数组s_new与答案数组array作比较,
如果一致,则返回0,表示原数组s中所有字符已翻转
*/
int num = strcmp(s_new, array);
if (num == 0) {
printf("数组翻转成功");
}
else {
printf("数组翻转失败");
}
return 0;
}
这样修改后,当fun函数中进行翻转时,同时也将a的值赋给了s_new,因此可以正确地比较结果。
你好,你翻转的是原数组呀,你把比较第一个参数改成s就可以了吧。
以下答案引用自GPT-3大模型,请合理使用:
原因分析:
仔细检查fun函数中,把s_new传入fun()函数中,但是没有把s翻转后的值重新赋值给s_new数组,所以最后比较时结果始终都是失败。
修正代码如下:
#include <stdio.h>
#include <string.h>
char s[20] = "I have a apple"; // 原始数组
char s_new[20]; // 用于存储翻转后的新数组
char array[20] = "elppa a evah I"; // 用于验证答案的数组
//请在该注释语句下方完成fun函数的定义
void fun(char a[],int len)
{
for (int i = 0; i < len/2; i++)
{
int t = a[i];
a[i] = a[len - i - 1];
a[len - i - 1] = t;
}
}
int main()
{
int len = strlen(s);
fun(s, len);
/*
将修改后的数组s_new与答案数组array作比较,
如果一致,则返回0,表示原数组s中所有字符已翻转
*/
// 将翻转后的值赋值给s_new
strcpy(s_new, s);
int num = strcmp(s_new, array);
if (num == 0) {
printf("数组翻转成功");
}
else {
printf("数组翻转失败");
}
return 0;
}
如果我的回答解决了您的问题,请采纳我的回答
不知道你这个问题是否已经解决, 如果还没有解决的话: