1.输入3给整数,分别放在变量a,b,c中,然后把输出的数据重新按由小到大的排序发在变量a,b,c中,最后输出a,b,c的值
#include<stdio.h>
int main() {
int a, b, c;
printf("请输入三个整数:");
scanf_s("%d %d %d", &a, &b, &c);
if (a > b) {
int x = a;
a = b;
b = x;
}
if (a > c) {
int x = a;
a = c;
c = x;
}
if (b > c) {
int x = b;
b = c;
c = x;
}
printf("%d %d %d", a, b, c);
return 0;
}
注解:思想就是换位,永远保持c的位置上的数字最大,a的位置上的数字最小;
让我们回顾一下用数组中的冒泡排序写一下
#include<stdio.h>
int main() {
int num[3] = { 0 };
for (int i = 0; i < 3; i++) {
scanf_s("%d", &num[i]);
}
for (int x = 0; x < 2; x++) {
for (int y = 0; y < 2- x; y++) {
if (num[x] > num[x + 1]) {
int z = num[x + 1];
num[x + 1] = num[x];
num[x] = z;
break;
}
}
}
for (int i = 0; i < 3; i++) {
printf("%d ",num[i]);
}
return 0;
}
冒泡排序我们的思路在数组讲过了,这里就不再重复叙述了。
下面是进阶写法:
#include <stdio.h>
#include <stdlib.h>
// 用于比较的函数
int compare(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int main() {
int nums[3];
printf("请输入三个整数:");
scanf_s("%d %d %d", &nums[0], &nums[1], &nums[2]);
qsort(nums, 3, sizeof(int), compare);
printf("从小到大排序后的结果为:%d %d %d\n", nums[0], nums[1], nums[2]);
return 0;
}
等我们拓展到了指针再具体讲解方法