文章

8

粉丝

136

获赞

2

访问

47.8k

头像
c语言程序哪里有问题,求解释
C语言
发布于2022年11月17日 17:47
阅读数 5.2k

题目:写一个函数,用起泡发对输入的字符按由小到大的顺序排列。

#include<stdio.h>
#include<string.h>
int main()
{char a[10];
void sort(char a[11]);
gets(a);
sort(a);
int i;
for(i=0;i<10;i++)
printf("%c",a[i]);
printf("\n");
return 0;
}

void sort(char a[10])
{
int i,j;
char t;
for(i=0;i<9;i++)
for(j=0;j<9-i;i++)
{
if(a[j]>a[j+1])
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}

我就是不知道哪里有问题

登录查看完整内容


登录后发布评论

2 条评论
快乐小土狗
2022年11月18日 09:07

主要是排序函数处理有问题

1、传参不能用形参,否则修改没效果

2、边界不要用9,通过strlen函数获取输入的字符串长度

3、冒泡排序的if下面三个交换语句要用中括号括住,是一个整体

修正代码如下

#include<stdio.h>
#include<string.h>
int main()
{
    char a[10];
    void sort(char a[11]);
    gets(a);
    sort(a);
    int i;
    for(i=0;i<strlen(a);i++)
    printf("%c",a[i]);
    printf("\n");
    return 0;
}

void sort(char *a)
{
    int i,j;
    char t;
    int len = strlen(a);
    for(i=0;i<len;i++)
    for(j=0;j<len-i-1;j++)
    {
        if(a[j]>a[j+1]){
            t=a[j];
            a[j]=a[j+1];
            a[j+1]=t;
        }
    }
}

 

赞(1)

追光 : 回复 快乐小土狗: 谢谢,但其实我不太明白第一二点,方便的话可以详细解释下吗,谢谢

2022年11月18日 21:43