写一个函数用起泡法对输入的十个字符由小到大排列

想问下大家我这样写为什么输出结果是这样

#include <stdio.h>

#include <stdlib.h>

void sort(char s[], int n);                      //定义排序函数

int main()

{

char str[11];

printf("Please enter 10 charactor: ");       //输入10个字符

gets(str);

sort(str, 10);                               //调用排序函数

system("pause");

return 0;

}

//排序函数(起泡法

void sort(char s[], int n)

{

for (int i=0; i<n-1; i++)

for (int j=0, t; j<n-1-i; s[j]>s[j+1]?t=s[j],s[j]=s[j+1],s[j+1]=t, j++ :j++);

printf("Sort array: ");

puts(s);

}

扩展资料:

printf函数使用注意事项

1、域宽

%d:按整型数据的实际长度输出。

如果想输出指定宽度可以指定域宽,%md--&gt;m域宽,打印出来以后,在控制台上,显示m位;

如果我们要打印的数的位数如果超过我们设定m则原样输出;

如果我们要打印的数的位数如果小于我们设定的位数,则补空白,具体如下:

如果m为正数,则左对齐(左侧补空白);

如果m为负数,则右对齐(右侧补空白)。

2、转义字符

如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。

如:printf("%f%%",1.0/3);输出结果:0.333333%。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-29
#include<stdio.h>
void sort(int a[],int len)
{
int i,j,temp;
for(i=0;i<len;i++)
for(j=0;j<len-1;j++)
if(a[j]>a[j+1])
{temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;}
}
int main()
{
int a[100];
int len;
int i=0;
printf("请输入数组数据(以零结束):");
scanf("%d",&a[i]);
while(a[i]!=0)
{
i++;
scanf("%d",&a[i]);
}
len=i;
printf("数组初始为:");
for(i=0;i<len;i++)
printf("%d ",a[i]);
printf("\n");
sort(a,len);
printf("排序后的数组为:");
for(i=0;i<len;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}本回答被网友采纳
第2个回答  2018-05-29
输入的字符之间不要加空格。
第3个回答  2018-05-29
程序没有问题。是你的输入有问……
只要作如下输入就可以了:
ABDKOLQPJW回车本回答被提问者采纳