一个C语言排序问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 16:13:31
这是我编的程序
main()
{
int i,j,t,max,b[10];
for(i=0;i<10;i++)
scanf("%d",&b[i]);
for(j=0;j<9;j++)
{
max=b[j];
for(i=j;i<10;i++)
{
if (b[i]>max)
max=b[i];
t=b[j];b[j]=b[i];b[i]=t;
}
}
for(i=0;i<10;i++)
printf("%4d",b[i]);
printf("\n");
}
这个程序对于全是正数的可以真确排序,可对于还有负数的就不行,
请帮忙解决!谢了
我用的是“选择法”排序
可以的,谢了,不过我想问一下,为什么我原来的程序,对于正数,可以排列真确,而含有负数就不行

{max=b[i];
t=b[j];b[j]=b[i];b[i]=t; }+上括号就可以了`

对啊 `你用的是选择法 而且把选择的过程表现出来了`

程序没问题 但注意if语句后 只能包括1个语句
如有多个语句 需要用大括号括起``

一点都没问题的`

你写这个程序是想让你数组里的元素倒序排列吧?看这个
#include "stdio.h"
void f(char str[])
{
int i,j;char k;
for(i=0,j=strlen(str)-1;i<j;i++,j--)
{
k=str[i];str[i]=str[j];str[j]=k;
}
printf("The new string is:%s\n",str);
}
main()
{
char s[200];
printf("please input a string:\n");
gets(s);
f(s);

}这个更明了.

用冒泡排序吧

#include<stdio.h>
void main()
{
int i,j,max,b[10];
for(i=0;i<10;i++)
{
scanf("%d",&b[i]);
}

for(i=0;i<=8;i++)
{
for(j=0;j<=8-i;j++)
{
if(b[j]<b[j+1])
{
max=b[j+1];
b[j+1]=b[j];
b[j]=max;
}
}
}

for(i=0;i<10;i++) <