c语言字符串排序选择法,C语言用选择排序法从小到大排序字符串

C语言用选择排序法从小到大排序字符串

答案:3  信息版本:手机版

解决时间 2020-06-09 08:39

已解决

2020-06-09 01:59

应该已经接近真相了~~请问 哪里出错了~可以运行,无法输出重新排列后的字符串

#include

#include

#define Max 100

int main()

{

char shmily[Max];

int count;

int i,j,k,empty;

printf("请输入字符串:\n");

scanf("%s",&shmily);

count=strlen(shmily);

for(i=0;i

{

k=i;

for(j=i+1;j

{

if(shmily[j]

{

k=j;

}

}

if(k!=i)

{

empty=shmily[k];

shmily[k]=shmily[i];

shmily[i]=empty;

}

}

printf("按照ASCII表重新排列为:\n");

for(i=0;i

{

printf("%s",shmily[i]);

}

return 0;

}

人呢~~~~~~~~~大神~~求救啊~~~~~~~~~~~~~~给点反应啊~~~~~~~~~····

全部回答

1楼

2020-06-09 04:48

最后输出的时候是逐一输出字符,用%c.

printf("按照ASCII表重新排列为:\n");

for(i=0;i

printf("%c",shmily[i]);

}

printf("\n"); //换一行

2楼

2020-06-09 03:44

已经修改好了,并且运行通过:

#include

#include

#define Max 100

int main()

{

char shmily[Max];

int count;

int i,j,k,empty;

printf("请输入字符串:\n");

scanf("%s",&shmily);

count=strlen(shmily);

for(i=0;i

{

k=i;

for(j=i+1;j

if(shmily[j]

empty=shmily[k];

shmily[k]=shmily[i];

shmily[i]=empty;

}

printf("按照ASCII表重新排列为:\n%s\n",shmily);

return 0;

}

3楼

2020-06-09 02:50

#include #include void f(char *str)

{

char *p,*q,*r,c;

for(p=str;*p;p++)

{

for(r=p,q=p+1;*q;q++)

if(*r>*q)//应该加*号,不加*号的比较大小是没有意义的,因为r,q是指针,而要比较的是指针指向的地址所储存的变量,

所以要加*号..

r=q;

if(r!=p)

{

c=*r;

*r=*p;

*p=c;

}

}

for(p=str;*p;p++)

{

for(q=p+1;*q && *q==*p;q++)//增加了&& *q=*p,这样才能保证当出现相同的字符时才开始操作,过程如下:

假设排好序的字符串为aab;

那么p首先指向a,q指向第二个a,此时满足*p==*q的条件,进入for循环,将q开始的字符串赋给p开始的字符串,即

aab->ab;

如果*p!=*q时,循环结束,大致就是这样子了..

strcpy(p,q--);

}

}

void main()

{

char s[50];

int number=0;

printf("please enter a string:\n");

gets(s);

f(s);

printf("%s\n",s);

}

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

大家都在看

推荐资讯

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要按照从小到大的顺序对n个字符串排序并输出,可以使用C语言字符串数组和字符串处理函数来实现。 首先,我们需要定义一个字符串数组来存储输入的n个字符串。假设我们定义的数组名为str,可以定义为char类型的二维数组,其中每一行存储一个字符串。 接下来,我们可以使用循环语句来读取n个字符串,并将它们存储到字符串数组中。 然后,我们可以使用排序法对字符串数组进行排序。常见的排序有冒泡排序、快速排序和归并排序等。在这里,我们可以选择使用冒泡排序。 冒泡排序是一种简单且易于理解的排序。它通过比较相邻的两个元素并交换它们的位置来实现排序。由于我们要按照字符串的大小进行排序,可以使用strcmp()函数来比较两个字符串的大小。 最后,我们可以使用循环语句遍历已经排序好的字符串数组,并依次输出每个字符串。 下面是具体的代码实现: ```c #include <stdio.h> #include <string.h> void bubbleSort(char str[][100], int n) { int i, j; char temp[100]; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (strcmp(str[j], str[j + 1]) > 0) { strcpy(temp, str[j]); strcpy(str[j], str[j + 1]); strcpy(str[j + 1], temp); } } } } int main() { int n, i; printf("请输入字符串的个数:"); scanf("%d", &n); char str[n][100]; printf("请输入%d个字符串:\n", n); for (i = 0; i < n; i++) { scanf("%s", str[i]); } bubbleSort(str, n); printf("按照从小到大排序后的字符串为:\n"); for (i = 0; i < n; i++) { printf("%s\n", str[i]); } return 0; } ``` 以上是一个简单的实现方,它可以实现按照从小到大的顺序对输入的n个字符串进行排序并输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值