尹恒559
2021-10-02 11:44
采纳率: 100%
浏览 28

字符数组中字符排序,感觉代码没问题呀,运行后没有出结果。另外给字符赋值不是要加上单引号吗?a[i]=a[j]为什么不用

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{

char a[101];
int b,i,j;
gets(a);
b=strlen(a);
for(i=0;i<a-1;i++)
    for(j=i+1;j<a;j++)
        if(a[i]>a[j])
        {
            a[i]=a[j]-a[i];
            a[j]=a[j]-a[i];
            a[i]=a[j]+a[i];
        }
puts(a);




return 0;

}

  • 好问题 提建议
  • 收藏

2条回答 默认 最新

  • qzjhjxj 2021-10-02 13:18
    已采纳

    修改见注释,既然是数组a[],a[i] 就是表示数组里的元素,供参考:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        char a[101];
        int b,i,j;
        gets(a);
        b=strlen(a);
        for(i=0;i<b-1;i++)  //for(i=0;i<a-1;i++)
            for(j=i+1;j<b;j++) //for(j=i+1;j<a;j++)
                if(a[i]>a[j])
                {
                   a[i]=a[j]-a[i];
                   a[j]=a[j]-a[i];
                   a[i]=a[j]+a[i];
                }
        puts(a);
        
        return 0;
    }
    
    
    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • 想上天的狗 2021-10-02 12:04

    首先,a是数组,也可以说是地址,但不是长度
    然后,加单引号就不是字符了,而是值为'a[j]'的字符串

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题