输入 3 3 个整数,按绝对值从小到大排序。 输入格式 输入包含 3 3 个int范围内的整数,用空格隔开。 输出格式 输出一行,包含三个数,用空格隔开。 若两个数字的绝对值一样,则比较两个数字的大小,c语言
时间: 2024-10-20 17:16:14 浏览: 43
C语言输入一个整数序列并计算他们的值.rar_C语言输入一个整数序列并计算他们的值_输入序列C语言
5星 · 资源好评率100%
在C语言中,你可以使用`<ctype.h>`库中的`isdigit()`函数判断输入是否为整数,并结合`<stdlib.h>`的`atoi()`将字符串转换为整数,然后通过`qsort()`函数对整数数组进行排序。下面是一个示例程序:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
// 比较函数,用于排序
int compare(const void* a, const void* b) {
int num1 = abs(*(int*)a);
int num2 = abs(*(int*)b);
if (num1 == num2) {
return (*(int*)a) - (*(int*)b);
} else {
return num1 - num2;
}
}
int main() {
int nums[3];
char input[10];
for (int i = 0; i < 3; i++) {
fgets(input, sizeof(input), stdin);
input[strcspn(input, "\n")] = '\0'; // 移除fgets获取的最后一行的换行符
int num = strtol(input, NULL, 10);
if (errno != ERANGE && num >= INT_MIN && num <= INT_MAX) {
nums[i] = num;
} else {
printf("Invalid input! Please enter an integer.\n");
return 1;
}
}
qsort(nums, 3, sizeof(int), compare); // 对数组进行排序
for (int i = 0; i < 3; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
```
在这个程序中,首先读取用户输入的3个整数,然后使用`compare()`函数作为`qsort()`的第三个参数,根据绝对值和数值本身进行排序。如果输入不是有效的整数,则会提示错误并退出。
阅读全文