C语言输入3个数,由小到大排序实数的整数部分
时间: 2024-09-18 10:04:09 浏览: 38
200个经典C程序源码小游戏
在C语言中,要实现输入三个实数并按整数部分从低到高排序,你可以使用以下步骤:
1. 首先,你需要定义一个结构体,用于存储每个实数及其对应的整数部分。例如:
```c
typedef struct {
double value;
int integer_part;
} RealNumber;
```
2. 然后编写函数`input_numbers()`来获取用户输入,并将整数部分保存到结构体中:
```c
void input_numbers(RealNumber arr[], int size) {
for (int i = 0; i < size; i++) {
printf("请输入第 %d 个数:", i+1);
double num = scanf("%lf", &arr[i].value); // 输入实数值
arr[i].integer_part = floor(arr[i].value); // 取整数部分
}
}
```
3. 接下来,定义一个辅助函数`compare_parts()`来比较两个实数的整数部分:
```c
int compare_parts(const void *a, const void *b) {
return (*(const RealNumber *)a).integer_part - (*(const RealNumber *)b).integer_part;
}
```
4. 使用`qsort()`函数对数组进行排序,传入`compare_parts()`作为比较函数:
```c
void sort_numbers(RealNumber arr[], int size) {
qsort(arr, size, sizeof(RealNumber), compare_parts);
}
```
5. 最后,在主程序里调用上述函数:
```c
int main() {
RealNumber numbers[3];
int size = 3;
input_numbers(numbers, size);
printf("按整数部分从小到大排序后的结果:\n");
sort_numbers(numbers, size);
for (int i = 0; i < size; i++) {
printf("%.1f (整数部分: %d)\n", numbers[i].value, numbers[i].integer_part);
}
return 0;
}
```
阅读全文