我想随机输入3个数字,然后升序输出。
大一>小
你知道我的意思吗?
#include <stdio.h>
int main(void) {
int a, b, c;
int min, mid, max;
scanf("%d %d %d", &a, &b, &c);
if (a > b) {
max = a;
min = b;
}
else {
max = b;
min = a;
}
mid = c;
if (c > max) {
max = c;
mid = a > b ? a : b;
min = a < b ? a : b;
}
else if (c < min) {
min = c;
mid = a < b ? : a : b;
max = a > b ? : a : b;
}
printf("1:%d 2:%d 3:%d", max, mid, min);
return 0;
}
最佳答案
代码不合逻辑,困惑。对 3 个数字进行排序的最简单方法是使用 swap
三次:
if (a > c) swap(&a, &c);
if (a > b) swap(&a, &b);
if (b > c) swap(&b, &c);
引入新变量是没有必要的,而且我不相信它们都在每个控制路径上设置,因此可能会产生未定义的结果。要构建交换
,请参阅Is there a built-in way to swap two variables in C ,或使用这个:
void swap(int* a, int* b)
{
int t = *b;
*b = *a;
*a = t;
}
最后,不要忘记检查scanf
的返回值;在你的情况下应该是 3。
关于c - 如何使我的代码按升序对输入进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57787785/