c语言输入未知个数组
时间: 2023-11-12 07:03:22 浏览: 139
可以使用循环结构和动态内存分配来实现输入未知个数的数组。具体实现方法如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr = NULL; // 定义一个指针,初始值为 NULL
int n = 0; // 数组长度
int temp; // 临时变量,用来存储用户输入的数字
printf("请输入数字,以空格或回车隔开,输入非数字结束:\n");
while (scanf("%d", &temp) == 1) { // 当输入是数字时
n++; // 数组长度加一
arr = (int *)realloc(arr, n * sizeof(int)); // 动态分配内存
arr[n-1] = temp; // 将输入的数字存入数组
}
printf("您输入的数组为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr); // 释放内存
return 0;
}
```
相关问题
c语言定义未知的数组
在C语言中,我们可以使用动态内存分配的方式来定义一个长度未知的数组。具体的方法是使用malloc函数来分配内存空间,然后将其转换为相应的数组类型。例如,如果我们需要定义一个长度为n的整型数组,可以使用以下代码:
int n;
scanf("%d", &n);
int *arr = (int *)malloc(n * sizeof(int));
这里,我们首先定义了一个整型变量n,然后通过scanf函数从用户输入中获取n的值。接着,我们使用malloc函数分配了n个整型变量所需的内存空间,并将其转换为整型指针类型。最后,我们就可以像使用普通数组一样使用这个动态分配的数组了。
如果需要定义一个多维数组,可以使用类似的方法。例如,如果我们需要定义一个col行row列的二维整型数组,可以使用以下代码:
int col, row;
scanf("%d%d", &col, &row);
int **arr = (int **)malloc(col * sizeof(int *));
for (int i = 0; i < col; i++) {
arr[i] = (int *)malloc(row * sizeof(int));
}
这里,我们首先定义了两个整型变量col和row,然后通过scanf函数从用户输入中获取这两个值。接着,我们使用malloc函数分配了col个指针类型变量所需的内存空间,并将其转换为指针类型的指针。然后,我们再使用循环分别为每个指针类型变量分配row个整型变量所需的内存空间。最后,我们就可以像使用普通的二维数组一样使用这个动态分配的数组了。
c语言输入一个长度未知的数组
在C语言中,如果要输入一个长度未知的数组,可以使用动态内存分配函数`malloc()`来动态地为数组分配内存。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h> // 包含动态内存分配函数malloc和free的头文件
int main() {
int len;
int *arr; // 定义指向int类型的指针arr
printf("Please input the length of array:\n");
scanf("%d", &len);
arr = (int *)malloc(len * sizeof(int)); // 动态分配内存
printf("Please input %d integers:\n", len);
for (int i = 0; i < len; i++) {
scanf("%d", &arr[i]); // 依次输入整数
}
printf("The array you input is:\n");
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]); // 输出输入的数组
}
printf("\n");
free(arr); // 释放动态分配的内存
return 0;
}
```
在程序运行时,先输入数组长度,然后输入相应长度的整数,程序会将这些整数存入动态分配的数组中并输出:
```
Please input the length of array:
5
Please input 5 integers:
1 2 3 4 5
The array you input is:
1 2 3 4 5
```