输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。 你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。用c语言生成代码
时间: 2024-01-22 20:18:51 浏览: 70
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100
int cmp(const void* a, const void* b) {
return *(int *)a - *(int *)b;
}
int main() {
char input[MAX_LEN];
int nums[MAX_LEN], idx = 0;
fgets(input, MAX_LEN, stdin);
for (int i = 0; i < strlen(input); i++) {
if (input[i] == '5') {
input[i] = ' ';
}
}
char* token = strtok(input, " ");
while (token != NULL) {
if (strlen(token) > 1 && token[0] == '0') {
token++;
while (*token == '0') {
token++;
}
}
nums[idx++] = atoi(token);
token = strtok(NULL, " ");
}
qsort(nums, idx, sizeof(int), cmp);
for (int i = 0; i < idx; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
```
程序运行时,输入一行数字,程序会将其中的 ‘5’ 替换成空格,并将分割得到的非负整数存储到数组中。接着,使用快速排序算法对这些整数进行排序,最后输出排序后的结果。
阅读全文