我不知道哪里还有问题ye
#include
int main()
{
int a[3] = { 0 };
int b[3] = { 0 };
int c[3] = { 0 };
int max = 0;
int mid = 0;
int min = 0;
int t = 0;
scanf("%d %d %d", &a[0],&a[1],&a[2]);
for (int i = 0; i < 3; i++)
{
if (a[i] < 0)
b[i] = -a[i];
else
b[i] = a[i];
}
if (b[0] > b[1])
{ t = a[0]; a[0] = a[1]; a[1] = t; }
if (b[0] > b[2])
{ t = a[0]; a[0] = a[2]; a[2] = t; }
if (b[1] > b[2])
{ t = a[1]; a[1] = a[2]; a[2] = t; }
if (b[0] > b[1])
{
t = b[0]; b[0] = b[1]; b[1] = t;
}
if (b[0] > b[2])
{
t = b[0]; b[0] = b[2]; b[2] = t;
}
if (b[1] > b[2])
{
t = b[1]; b[1] = b[2]; b[2] = t;
}
if (b[0] == b[1])
{
if (a[0] > a[1])
{
t = a[0]; a[0] = a[1]; a[1] = t;
}
}
if (b[1] == b[2])
{
if (a[1] > a[2])
{
t = a[1]; a[1] = a[2]; a[2] = t;
}
}
if (b[0] == b[1] && b[1] == b[2])
{
if (a[0] > a[1])
{
t = a[0]; a[0] = a[1]; a[1] = t;
}
if (a[0] > a[2])
{
t = a[0]; a[0] = a[2]; a[2] = t;
}
if (a[1] > a[2])
{
t = a[1]; a[1] = a[2]; a[2] = t;
}
}
for (int i = 0; i < 3; i++)
{
printf("%d ", a[i]);
}
return 0;
}
题主推荐学下冒泡排序哦,这样这题就比较简单了
#include<stdio.h>
int main()
{
int a[3] = { 0 };
int b[3] = { 0 };
int t = 0;
scanf("%d %d %d", &a[0],&a[1],&a[2]);
for (int i = 0; i < 3; i++)
{
if (a[i] < 0)
b[i] = -a[i];
else
b[i] = a[i];
}
//使用冒泡排序
int mid;
for(int i = 0;i < 3;i++){
for(int j = i + 1;j < 3;j++){
if(b[i] > b[j]){
mid = a[i];
a[i] = a[j];
a[j] = mid;
mid = b[i];
b[i] = b[j];
b[j] = mid;
}else if(b[i] == b[j]){
if(a[i] > a[j]){
mid = a[i];
a[i] = a[j];
a[j] = mid;
mid = b[i];
b[i] = b[j];
b[j] = mid;
}
}
}
}
for (int i = 0; i < 3; i++)
{
printf("%d ", a[i]);
}
return 0;
}
这代码写的真是又臭又长
你都已经放数组里了,为什么不直接循环一下冒泡排序,为什么要这样一个一个的写死
满眼代码,写着费劲,看着也费劲,调试更费劲