一道C语言编程题
给定一个字符串,以中心对称左右字母分别比较大小,如果左边大于右边则对调,如最后一位有符号保持该位不变。
例如:输入:goxd!
输出:doxg!
#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;
}