写一个函数,用起泡法对输入的10个字符按由小到大顺序排列 c语言求大神帮助

如题所述

#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-03-29
字母输入时中间不要有空格
#include <stdio.h>
#include <stdlib.h>

void Sort(char a[],int N)
{
char temp;
int i, j, flag;
for(i=0;i<N-1;i++){
flag = 0;
for(j=0;j<N-1-i;j++)
{
if(a[j]>a[j+1])
{temp=a[j];a[j]=a[j+1];a[j+1]=temp; flag=1;}
}
if(flag==0)break;
}
}

int main()
{
int i,j,t;
char a[10];
for(i=0;i<10;i++)
scanf("%c", &a[i]) ;
Sort(a,10);
printf("The sequence after sort is:\n");
for(i=0;i<10;i++)
printf("%c ",a[i]);
printf("\n");
system("pause");
return 0;
}本回答被提问者和网友采纳