c语言*输入一串字符串,将字符串中的数字提取出来,并将其按从小到大的顺序排列输入样例:ajhsduh2536djk9494cnj9输出样例:9 2536 9494说明:字符串最大小于200
时间: 2024-12-10 08:27:29 浏览: 18
在C语言中,你可以通过以下几个步骤来实现这个功能:
1. 定义一个函数,接收输入字符串作为参数。
2. 使用`isalnum()`函数遍历字符串,检查字符是否为字母或数字。
3. 如果遇到数字,则转换为整数并添加到排序数组中。
4. 使用`qsort()`函数对找到的数字进行排序。
5. 输出排序后的结果。
以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
// 将字符串转成整数并添加到数组中
void extract_numbers(char str[], int arr[], int *size) {
char num[20]; // 存储临时数字
int i = 0;
for (int j = 0; j < strlen(str); ++j) {
if (isdigit(str[j])) {
num[i++] = str[j];
if (i == sizeof(num)) {
arr[*size] = atoi(num);
(*size)++;
i = 0;
}
} else if (str[j] == ' ') {
// 遇到空格则处理已存储的数字
if (i > 0) {
arr[*size] = atoi(num);
(*size)++;
i = 0;
}
}
}
if (i > 0) {
arr[*size] = atoi(num);
(*size)++;
}
}
// 冒泡排序函数
void bubble_sort(int arr[], int size) {
for (int i = 0; i < size - 1; ++i) {
for (int j = 0; j < size - 1 - i; ++j) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
char input[] = "ajhsduh2536djk9494cnj9";
int numbers[200] = {0};
int size = 0;
extract_numbers(input, numbers, &size);
// 冒泡排序
bubble_sort(numbers, size);
printf("Sorted numbers: ");
for (int i = 0; i < size; ++i) {
printf("%d ", numbers[i]);
}
return 0;
}
```
阅读全文