c语言里两组数字个数未知的数据怎么输入
时间: 2024-12-08 10:15:15 浏览: 20
在C语言中,处理两组数字个数未知的数据输入通常涉及到动态内存分配。如果不确定数据的数量,可以采用数组的动态大小(如`malloc`函数),或者使用结构体数组结合`while`循环来逐个输入。这里提供一种基本的思路:
1. 使用`malloc`或`calloc`获取动态内存:
```c
size_t n;
printf("请输入第一组数据的元素个数:");
scanf("%zu", &n); // %zu用于读取无符号整数
// 对于整型数组
int *first_group = malloc(n * sizeof(int));
if (first_group == NULL) {
printf("内存分配失败!\n");
return;
}
printf("请输入第一组数据:");
for (size_t i = 0; i < n; i++) {
scanf("%d", &first_group[i]);
}
// 同样的步骤为第二组数据分配和输入
size_t m;
scanf("%zu", &m);
int *second_group = malloc(m * sizeof(int));
// 输入第二组数据...
```
2. 结构体数组:
```c
typedef struct {
int number;
} NumberPair;
size_t n, m;
printf("请输入两组数据的总个数:");
scanf("%zu", &n);
NumberPair *pairs = malloc(n * sizeof(NumberPair));
if (pairs == NULL) {
printf("内存分配失败!\n");
return;
}
for (size_t i = 0; i < n; i++) {
printf("请输入第%d对数据的第一个数字:", i+1);
scanf("%d", &pairs[i].number);
// 如果需要,可以再输入第二个数字并赋值给pairs[i].another_number
}
free(pairs);
```
在上述代码中,记得在完成输入后释放动态分配的内存,避免内存泄漏。
阅读全文