mamaaini 发表于 2023-11-26 11:28:46

不对

将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。

为啥代码不能让字符逆转

#include <stdio.h>
#include<string.h>
int main() {
    char str;
    gets(str);
    int len = strlen(str);
    for (int i = 0; i < len; i++) {
      char temp = str;
      str = str;
      str = temp;
    }
    printf("%s", str);

    return 0;
}

FishC_GPT 发表于 2023-11-26 11:29:02

你的代码存在一些问题。我来给你解释一下并提供正确的代码。

首先,你定义的字符变量str应该是一个字符串数组,而不是单个字符。所以要修改为`char str;`,这样就可以存储最大长度为100(加上末尾的'\0')的字符串了。

其次,你使用的是`gets`函数来读取字符串,但是这个函数已经被废弃了,因为它不安全。你可以使用`fgets`函数来读取字符串,并指定最大读取的字符数为`100`,这样就不会超出数组的范围了。

然后,你在颠倒字符串的循环中,交换字符的代码有问题。你需要交换的是`str`和`str`,而不是`str`本身。可以使用一个临时变量来完成交换操作。

最后,你在打印字符串的时候,应该使用`puts`函数而不是`printf`函数。因为`puts`会自动在末尾添加换行符。

下面是修改后的代码:

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

int main() {
    char str;
    fgets(str, 100, stdin);
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
      char temp = str;
      str = str;
      str = temp;
    }
    puts(str);

    return 0;
}

现在你可以输入一个字符串,然后代码会将其倒序输出。希望对你有帮助!

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

mamaaini 发表于 2023-11-26 11:37:38

#include <stdio.h>
#include <string.h>
int main()
{
    char a,temp;
    int i;
    fgets(a,101,stdin);
    int n=strlen(a);
    for(i=0;i<n/2;i++)
    {
      temp=a;
      a=a;
      a=temp;
    }
    puts(a);
    return 0;
}
为什么运行崩溃

FishC_GPT 发表于 2023-11-26 11:37:54

mamaaini 发表于 2023-11-26 11:37
#include
#include
int main()
{
    char a,te ...

你的代码中有一些问题。我来给你解释一下并提供正确的代码。

首先,你定义的字符变量 `a` 应该是一个字符串数组,而不是单个字符。所以要修改为 `char a;`,这样就可以存储长度为100的字符串了。同时,在使用 `fgets` 函数时,应该指定读取的字符数为 101,以防止溢出。

然后,你在循环中的交换操作不正确。正确的交换操作应该是通过使用临时变量来交换两个字符的值。
具体来说,你需要交换 `a` 和 `a` 位置上的字符。

最后,你在打印字符串时,可以使用 `puts` 函数来输出字符串,并自动添加换行符。需要注意的是,`fgets` 函数会将输入的换行符也读入到字符串中,所以在输出时可能会出现多余的换行符。可以使用 `strtok` 函数去除换行符。

下面是修改后的代码:

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

int main() {
    char a, temp;
    int i;
    fgets(a, 101, stdin);
    int n = strlen(a);
   
    // 去除换行符
    strtok(a, "\n");
   
    for (i = 0; i < n / 2; i++) {
      temp = a;
      a = a;
      a = temp;
    }
   
    puts(a);
   
    return 0;
}

现在你可以输入一个字符串,然后代码会将其颠倒输出。希望对你有帮助!

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

歌者文明清理员 发表于 2023-11-26 11:45:40



无语了

人造人 发表于 2023-11-26 12:18:58

歌者文明清理员 发表于 2023-11-26 11:45
无语了

就是看不懂这位同学在做什么
页: [1]
查看完整版本: 不对