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

#include<stdio.h>
#include<string.h>
void rank(char s[10])
{
int i,j;
char t;
for(j=0;j<9;j++)
{for(i=0;i<9-j;i++)
if(s[i]>s[i+1])
{t=s[i];s[i]=s[i+1];s[i+1]=t;}}
}
int main()
{
void rank(char s[10]);
int i;
char s[10];
printf("input 10 strings:\n");
for(i=0;i<10;i++)
scanf("%s",&s[i]);
printf("\n");
rank(s[i]);
printf("the sorted strings:\n");
for(i=0;i<10;i++)
printf("%s",s[i]);
printf("\n");
return 0;
}
我的问题出在哪里了?请高手指教!!谢谢!

#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个回答  推荐于2017-12-16

程序崩溃有两个地方。

    rank(s[i]);

    这个函数传参的时候要传  s 也就是rank(s);

    printf("%s",s[i]);
    输出的时候是字符,不是字符串。 应该为printf("%c",s[i]);

    算法我没看,不崩溃的话,你自己调一调,好

本回答被提问者和网友采纳