字符串排序无法正常工作

骗子

我编写了这段代码,该代码假定按照某些规则对字符串进行排序,小写字母首先从z开始,然后从AZ开始使用大写字母,但是它没有按我预期的那样工作。(我知道问题来自should_be_swapped函数,但我不明白为什么它不起作用。)它所要做的就是将字符串“ DBCAdbca”更改为新的字符串“ abcdABCD”。

#include <stdio.h>

int should_be_swapped(char ch1,char ch2);
void swap_chars(char* ch1, char* ch2);
int sort_string(char* str);

int main()
{
    char a[]="DCBAdcba";
    if (sort_string(a))
    {
        printf("Sorted String: %s\n", a);
    }
    else
    {
        printf("The original String was already sorted.\n");
    }
    return 0;
}

int should_be_swapped(char ch1,char ch2)
{
    if (ch1<ch2)
    {
        return 1;
    }
    if (ch1>ch2 && ch1<='z'&& ch1>='a' && ch2<='z'&&ch2>='a')
    {
        return 1;
    }
    if (ch1>ch2 && ch1<='Z'&& ch1>='A' && ch2<='Z'&&ch2>='A')
    {
        return 1;
    }
    else {
        return 0;
    }
}

void swap_chars(char* ch1, char* ch2)
{
    char tmp;
    tmp = *ch1;
    *ch1 = *ch2;
    *ch2 = tmp;
}

int sort_string(char* str)
{
    int i,j,count=0;

        for (j=0;str[j]!='\0';j++)
        {
            for (i=0;(str[i])!='\0';i++)
            {
                if (should_be_swapped(str[i],str[i+1])  )
                {
                swap_chars(&str[i],&str[i+1]);
                count++;
                }
            }
        }

    if (count>0)
        {
        return 1;
        }
    else {
        return 0;
    }
}

有什么建议?

2501

这是我的解决方案。它首先检查值是否在违规范围内,并进行修正,如果值在z之内,则将其转换为AZ,反之亦然。然后,它使用单个if语句比较新值,但是旧值被交换。

int should_be_swapped(char ch1,char ch2)
{
    const char cn1 = ( ch1<='z'&& ch1>='a' ) ? ch1 - ( 'A' - 'a' ) : ch1 ;
    const char c1 = ( ch1<='Z'&& ch1>='A' ) ? ch1 + ( 'A' - 'a' ) : cn1 ;

    const char cn2 = ( ch2<='z'&& ch2>='a' ) ? ch2 - ( 'A' - 'a' ) : ch2 ;
    const char c2 = ( ch2<='Z'&& ch2>='A' ) ? ch2 + ( 'A' - 'a' ) : cn2 ;

    if( c1 > c2 )
    {
        return 1 ;
    }

    return 0 ;
}

在您的代码中使用此函数将提供正确的结果:abcdABCD

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

字符串比较无法正常工作

来自分类Dev

字符串格式无法正常工作

来自分类Dev

字符串比较无法正常工作

来自分类Dev

字符串比较无法正常工作

来自分类Dev

字符串匹配无法正常工作

来自分类Dev

比较字符串无法正常工作

来自分类Dev

Rails集合排序与UTF-8字符串无法正常工作

来自分类Dev

C ++字符串比较无法正常工作

来自分类Dev

跨度的jQuery搜索字符串无法正常工作

来自分类Dev

字符串比较在C中无法正常工作

来自分类Dev

Powershell选择字符串无法正常工作

来自分类Dev

构造为字符串-strcat无法正常工作

来自分类Dev

处理字符串时,in_array无法正常工作

来自分类Dev

PHP中的字符串比较无法正常工作

来自分类Dev

静态字符串的链式插值无法正常工作

来自分类Dev

子字符串无法在innerHtml上正常工作

来自分类Dev

if语句在字符串数据上无法正常工作:Excel

来自分类Dev

字符串引用功能无法正常工作

来自分类Dev

环绕字符串的简单循环无法正常工作?

来自分类Dev

PHP字符串替换无法正常工作

来自分类Dev

Powershell选择字符串无法正常工作

来自分类Dev

PHP字符串比较无法正常工作

来自分类Dev

Swift使NSDate从字符串无法正常工作

来自分类Dev

C ++字符串->替换无法正常工作

来自分类Dev

空字符串SQL无法正常工作

来自分类Dev

PHP中的字符串替换无法正常工作

来自分类Dev

Javascript日期到字符串的方法无法正常工作

来自分类Dev

javascript中的字符串替换无法正常工作

来自分类Dev

python可变字符串类无法正常工作