关于#字符串#的问题,如何解决?

一道C语言编程题
给定一个字符串,以中心对称左右字母分别比较大小,如果左边大于右边则对调,如最后一位有符号保持该位不变。

例如:输入:goxd!

   输出:doxg!

img


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

void swap(char* str)
{
    int len = strlen(str);
    int center = len / 2;
    char* left = str;
    char* right = str + len - 1;

    while (left < right) {
        if (*left > *right) {
            char temp = *left;
            *left = *right;
            *right = temp;
        }
        left++;
        right--;
    }
}

int main()
{
    char str[] = "goxdek!";
    swap(str);
    printf("%s\n", str); 

    return 0;
}

如最后一位有符号保持该位不变?这是啥意思???

#include <stdio.h>
#include <string.h>
int main()
{
    char s[100],temp;
    gets(s);
    int len = strlen(s);
    int left = 0,right;
    if((s[len-1] >= 'a' && s[len-1] <= 'z') || (s[len-1]>='A' && s[len-1]<='Z'))
        right = len-1;
    else
        right = len-2;
    while(left < right)
    {
        if(s[left] > s[right])
        {
                temp = s[left];
                s[left] = s[right];
                s[right] = temp;
        }
        left++;
        right--;
    }
    puts(s);
}

参考如下:

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

int main() 
{
    char str[100];
    scanf("%s", str);
    int length = strlen(str);
    int left = 0, right = length - 2;
    while (left < right) 
    {
        if (str[left] > str[right])  // 如果左边大于右边,则互换
        {
            char temp = str[left];
            str[left] = str[right];
            str[right] = temp;
        }
        left++;
        right--;
    }
    printf("%s", str);
    return 0;
}