[7] 输入一个字符串,内有数字和非数字字符,如: A123x456 17960?302tab5876,将其中连续的数字作为一个整数,依次用数组存放这些数,统计有多少个整数,并输出这些数。 用子函数实现两个字符数组比大小的功能。
时间: 2024-12-14 17:25:07 浏览: 10
要完成这个任务,你可以使用以下步骤:
1. 定义一个主函数 `main`,用于接收输入并调用其他辅助函数。
2. 创建一个子函数 `read_numbers` 来读取输入字符串并将连续的数字提取出来存储到数组中。
3. 创建一个子函数 `count_integers` 计算输入字符串中的整数个数。
4. 创建一个子函数 `compare_strings` 实现字符数组比较功能。
5. 在主函数中,调用这些子函数并输出结果。
这里是完整的C代码示例:
```c
#include <stdio.h>
#include <ctype.h> // 包含处理字符类型的功能
// 子函数:读取并返回连续数字的整数值
int read_number(char* str) {
int num = 0;
int sign = 1; // 正负号
while (isdigit(*str)) { // 检查是否为数字字符
num = num * 10 + (*str - '0'); // 加上当前数字
str++; // 移动指针到下一个位置
}
return sign * num; // 返回带符号的整数
}
// 子函数:读取输入字符串中的所有连续数字并存入数组
void read_numbers(char* input, int* numbers, int* count) {
char current_char = input[0];
int index = 0;
*count = 0;
for (; *input != '\0'; input++) {
if (isdigit(*input)) { // 如果遇到数字字符
if (current_char == '\0' || !isdigit(current_char)) { // 新的数字开始
numbers[index++] = read_number(input); // 读取并存储
}
} else if (index > 0) { // 结束前一串数字
*count += 1;
input--; // 退回到数字结束的位置,准备下一轮循环
}
current_char = *input;
}
}
// 子函数:比较两个字符数组
int compare_strings(const char* arr1, const char* arr2) {
while (*arr1 != '\0' && *arr2 != '\0') {
if (*arr1 > *arr2) {
return 1;
} else if (*arr1 < *arr2) {
return -1;
}
arr1++;
arr2++;
}
return *arr1 == '\0' ? 0 : *arr2 == '\0' ? -1 : 1; // 比较剩余字符
}
// 主函数
int main() {
char input[100];
printf("Enter a string with numbers and non-numbers: ");
fgets(input, sizeof(input), stdin);
input[strcspn(input, "\n")] = '\0'; // 去除行尾的换行符
int numbers[100]; // 数组假设最大长度为100(实际可能更小)
int num_count = 0;
read_numbers(input, numbers, &num_count);
printf("Number of integers found: %d\n", num_count);
printf("Numbers: ");
for (int i = 0; i < num_count; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
// 示例比较,这里仅用于演示,不是题目要求
char arr1[] = "A123";
char arr2[] = "456B";
int comp_result = compare_strings(arr1, arr2);
if (comp_result == 1) {
printf("String 1 is greater than String 2.\n");
} else if (comp_result == -1) {
printf("String 1 is less than String 2.\n");
} else {
printf("Strings are equal.\n");
}
return 0;
}
```
阅读全文