输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。 你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。 用c语言
时间: 2024-01-22 19:20:22 浏览: 135
以下是用C语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
int main() {
char line[1000];
int nums[1000], idx = 0;
fgets(line, 1000, stdin); // 读入一行字符串
for (int i = 0; i < strlen(line); i++) {
if (line[i] == '5') {
line[i] = ' '; // 将5变为空格
}
}
char *token = strtok(line, " "); // 使用空格分割字符串
while (token != NULL) {
int num = atoi(token);
if (num != 0 || strcmp(token, "0") == 0) {
nums[idx++] = num; // 将非0整数存入数组
}
token = strtok(NULL, " ");
}
qsort(nums, idx, sizeof(int), cmp); // 数组排序
for (int i = 0; i < idx; i++) {
printf("%d ", nums[i]); // 输出排序后的整数
}
printf("\n");
return 0;
}
```
输入格式为一行数字,例如:
```
12354205
```
输出为按从小到大排序的若干非负整数,例如:
```
0 123 205
```
阅读全文