案例是:输入4-2-8,从小到大输出2-4-8,可是我怎么变成2-8-4了啊,大佬们我这个代码哪儿错了
#include<stdio.h>
2
int main()
3
{
4
int c,i,j,a[12];
5
6
for(i=0;i<3;i++){
7
scanf("%d",&a[i]);
8
}
9
for(i=0;i<3;i++){
10
for(j=1;j<3;j++){
11
if(a[i]>a[j]){
12
c=a[i];
13
a[i]=a[j];
14
a[j]=c;
15
}
16
}
17
}printf("%d->%d->%d",a[0],a[1],a[2]);
18
return 0;
19
}
j应该从i+1开始循环,不是1,i不能小于j 否则j=2,i=1时 a[i] > a[j] 比较又换回来了
#include <stdio.h>
int main()
{
int c, i, j, a[12];
for (i = 0; i < 3; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i < 3-1; i++) //i 只循环到长度-1即可
{
for (j = i+1; j < 3; j++) //j应该从i+1开始循环,不是1,i不能小于j 否则j=2,i=1时 a[i] > a[j] 比较又换回来了
{
if (a[i] > a[j])
{
c = a[i];
a[i] = a[j];
a[j] = c;
}
}
}
printf("%d->%d->%d", a[0], a[1], a[2]);
return 0;
}
如有帮助,望采纳!谢谢!
for(i=0;i<2;i++){
for(j=0;j<2-i;j++){
if(a[j]>a[j+1]){
c=a[j];
a[j]=a[j+1];
a[j+1]=c;
}
}
}
for(i=0;i<3;i++){
for(j=i+1;j<3;j++){ //这里是i+1,不是1,因为i的值在变啊
if(a[i]>a[j]){
c=a[i];
a[i]=a[j];
a[j]=c;
}