C语言 字母排列
发布网友
发布时间:2022-04-22 10:57
我来回答
共3个回答
热心网友
时间:2023-10-11 16:48
1、该排序算法是选择排序算法
2、在i位置为大写字母时进行第二层遍历
3、如果判断不为大写字母,不需要j++之后continue,否则会跳过一个字母
修改后代码如下,修改位置注释给出:
//1072字母排列
#include<stdio.h>
#include<string.h>
int main()
{
char a[65];
int i,j,b,min;
gets(a); //读取一行内容
b=strlen(a);
//冒泡排序法,i为前面的字符,j为后一个字符
for(i=0;i<b-1;i++)
{
if(a[i]<'A'||(a[i]>'Z')||a[i]==' ')continue;/////judge
for(j=i+1;j<b;j++)
{
if(a[j]<'A'||(a[j]>'Z')||a[j]==' ')
{
//j++;//delete
continue;
}
if(a[i]>a[j])//从小到大排序,小的排左边,大的排右边
{
min=a[j];
a[j]=a[i];
a[i]=min;
}
}
}
for(i=0;i<b;i++)
printf("%c",a[i]);
return 0;
}
热心网友
时间:2023-10-11 16:48
第一,你这个好像是选择排序吧,不是冒泡
第二,
{
j++;
continue;
}
这个j++不需要吧,否则加了两次
热心网友
时间:2023-10-11 16:49
你这用的不是冒泡法,所以,你的代码在比较时就出了问题!