C语言将10个数字从小到大排列,为什么我的代码输入是1,2,3,4,5,6,7,8,9,10输出是1,10,9,8,7,6,5,4,3,2呢?

哪里错了?该怎么改正呢?
#include<stdio.h>
#include<conio.h>
int main()
{
int a[10],i,n;
printf("请输入数字:\n");
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
void array(int x[],int n);
array(a,10);
printf("从小到大排列为:\n");
for(i=0;i<=9;i++)
{
printf("%d ",a[i]);
}
getch();
return 0;
}
void array(int x[],int n)
{
int i,j,t;
for(i=0;i<=9;i++)
{
for(j=1;j<=9;j++)
{
if(x[i]>x[j])
{
t=x[i];
x[i]=x[j];
x[j]=t;
}
}
}
}

程序
#include<stdio.h>
#include<conio.h>
int main()
{
int a[10],i,n;
printf("请输入数字:\n");
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
void array(int x[],int n);
array(a,10);
printf("从小到大排列为:\n");
for(i=0;i<=9;i++)
{
printf("%d ",a[i]);
}
getch();
return 0;
}
void array(int x[],int n)
{
int i,j,t;
for(i=0;i<=8;i++)
{
for(j=i+1;j<=9;j++)
{
if(x[i]>x[j])
{
t=x[i];
x[i]=x[j];
x[j]=t;
}
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-01
这种问题一般是边界定义出错,就是for()里面的循环的条件定义出错,用冒泡去排序效果会好一点,我把你的程序改了改,现在可以完成你的排序要求了
#include<stdio.h>
#include<conio.h>
void array(int x[],int n)
{
int i,j,t;
for(i=0;i<=9;i++)
{
for(j=i+1;j<=9;j++)
{
if(x[i]<x[j])
{
t=x[i];
x[i]=x[j];
x[j]=t;
}
}
}
}
int main()
{
int a[10],i,n;
printf("请输入数字:\n");
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
array(a,10);
printf("从小到大排列为:\n");
for(i=0;i<=9;i++)
{
printf("%d ",a[i]);
}
getch();
return 0;
}本回答被提问者采纳
第2个回答  2012-11-01
1. void array中的参数int n没用到,删去吧。

2. 冒泡排序有问题,从大到小,应为:
for( i = 0; i < 10; i++)
for( j = 0 ; j < 9 - i; j++)
if( x[j] < x[j + 1] ) {
t = x[j];
x[j] = x[j + 1];
x[j + 1] = t;
}
第3个回答  2012-11-01

最后一个for循环   j=0  而不是j=1

 给你标上了 



#include<stdio.h>

#include<conio.h>

int main()

{

int a[10],i,n;

printf("请输入数字:\n");

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

{

scanf("%d",&a[i]);

}

void array(int x[],int n);

array(a,10);

printf("从小到大排列为:\n");

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

{

printf("%d ",a[i]);

}

getch();

return 0;

}

void array(int x[],int n)

{

int i,j,t;

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

{

    for(j=1;j<=9;j++)

{

if(x[i]>x[j])

{

t=x[i];

x[i]=x[j];

x[j]=t;

}

}

}

}


而且 n是多余的  有没有不影响    还占用资源!

第4个回答  2012-11-01
排序排错了
第一轮:i=0判断 1>2false 1>3false.........1>9false
第二轮:i=1判断 2>2 false 2>3false...........2>9false
第三轮:i=2判断 3>2true交换 3>3false.....
.......
第十轮:i=9判断 10>2turn交换........
明白没,

C语言:采用冒泡排序方法,对10个数按由小到大的的顺序排序
int main(){ int i,j,t,a[10]={5,4,8,3,6,9,7,222,64,88};\/\/排序 for(i=1;i<10;i++)\/\/外循环控制排序趟数,n个数排n-1趟 { for(j=0;j<10-1;j++)\/\/内循环每趟比较的次数,第j趟比较n-i次 { if(a[j]>a[j+1])\/\/相邻元素比较,逆序则交换 { t=a[j];a[j...

用c语言定义一个大小为10的整型数组,利用冒泡排序法将数组元素从大到...
include <stdio.h>int main(){ int a[10]={1,2,3,4,5,6,7,8,9,10}; int i,j,t; for(i=1;i<10;i++) for(j=0;j<10-i;j++) { if (a[j]

如何用编程实现10个数从大到小输出?
int main(){ int i,j,a[10],t;printf("输入数");for (i = 0; i < 10; i++)scanf("%d",&a[i]);for (i = 0; i < 10; i++){ for (j = i + 1; j < 10;j++)if (a[i] < a[j]){ t = a[i];a[i] = a[j];a[j] = t;} } printf("从大到小");...

C语言~十个数字从小到大怎么排列~从大到小呢~
int a[10],i,j,t;printf("请输入10个整数:\\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(a[j]>a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t;} printf("排序以后的数:\\n");for(i=0;i<10;i++)printf("%d "...

求C语言将数组元素大小排序!!
int numbers[10] = { 10,2,3,4,5,6,9,8,7,1 };int a,b, text, hello;for(a=0; a<10-1; a=a+1) { \/\/在这里进行比较的开始的代码 hello = 1; \/\/假如剩下的元素已经被排序好了,然后接着进行下面的比较 for(b=0; b<10-1-i; b=b+1){ if(numbers[b] > numb...

求C语言将数组元素大小排序!!
C语言将数组元素大小排序方法:以下使用的是冒泡排序法实线数组从小到大排序。思想:每次相邻两个数比较,若升序,则将大的数放到后面,一次循环过后,就会将最大的数放在最后。10、2、3、4、5、6、9、8、7、1是输入的待排序的数列,经过第一次排序,将最大的,10放在最后,第二次排序,将剩下的...

C语言 输入10个数按大小排列输出
For (I = 0;我< 10;我+ +){ if the scanf (" % ", & a [I]);\/\/从键盘输入十个数字到数组中;} For (I = 1;我< 10;i++)\/\/for循环,执行9个循环;{ 对于(j = I - 1;J > = 0;J——)\/\/for循环,在每个大循环中,将a[I]从a[1]比较到它之前的数字;{ If (a[...

C语言 从键盘输入10个整数,将这10个整数按从小到大的顺序输出。
1、打开软件进入页面,点击文件-新建-文件-C++ Source File。2、输入预处理命令和主函数:#include<stdio.h>\/*输入输出头文件*\/void main()\/*空类型:主函数*\/。3、定义变量和数组的数据输入10个数:int a[10],i,t;\/*定义变量和数组数据类型为整型*\/printf("输入10个整数:");\/*输出文字...

c语言 用选择法对10个整数从小到大排序
c=j; \/\/记住最小值的下标。} } if(c !=i) \/\/进行交换。{ int temp = a[i];a[i] = a[c];a[c] = temp;} } } int main(){ int a[10]={1,3,5,7,9,2,4,6,8,10};sort(a,10);int i;for(i=0;i<10;i++){ printf("%d ",a[i]);} getchar();return 0;}...

C语言如何输入十个数,按从大到小顺序排列!
int i,j,a[10],t;printf("请输入十个数:");for (i = 0; i < 10; i++)scanf("%d",&a[i]);for (i = 0; i < 10; i++){ for (j = i + 1; j < 10;j++) \/\/循环 if (a[i] < a[j]){ t = a[i];a[i] = a[j];a[j] = t;} } printf("从大到小...

相似回答