用C写一个用scanf输入不确定长度的数
时间: 2023-03-24 21:04:22 浏览: 108
您好,以下是回答您的问题:
可以使用动态内存分配来实现输入不确定长度的数。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *nums = NULL; // 定义指向整型的指针,初始值为 NULL
int size = ; // 数组大小
int num; // 临时存储输入的数
while (scanf("%d", &num) == 1) { // 循环读入数,直到输入结束
size++; // 数组大小加一
nums = (int *)realloc(nums, size * sizeof(int)); // 重新分配内存
nums[size - 1] = num; // 将输入的数存入数组
}
// 输出数组中的数
for (int i = ; i < size; i++) {
printf("%d ", nums[i]);
}
free(nums); // 释放内存
return ;
}
```
以上是回答您的问题,希望能对您有所帮助。
相关问题
c语言输入不确定个数的数组
在C语言中,声明数组时可以使用变量来指定数组的长度,也可以使用malloc函数动态分配数组的内存空间,以实现输入不确定个数的数组。
例如,使用变量来指定数组长度可以如下声明:
```
int n;
printf("请输入数组元素个数:");
scanf("%d", &n);
int arr[n];
for(int i=0; i<n; i++){
printf("请输入第%d个元素:", i+1);
scanf("%d", &arr[i]);
}
```
上述代码通过输入一个变量n来确定数组arr的长度,从而可以输入n个元素值。
另外,也可以使用malloc函数动态分配数组内存空间,实现输入不确定个数的数组:
```
int n;
printf("请输入数组元素个数:");
scanf("%d", &n);
int *arr = (int *)malloc(sizeof(int) * n);
for(int i=0; i<n; i++){
printf("请输入第%d个元素:", i+1);
scanf("%d", &arr[i]);
}
free(arr); //记得释放内存空间
```
上述代码中,malloc函数将分配n个int类型的内存空间,并将其地址赋给指针arr。之后可以通过arr指针来访问数组元素,实现输入不确定个数的数组。记得最后释放内存空间,避免内存泄漏。
c语言怎么定义一个不确定长度的数组并且赋值
在C语言中,可以使用指针和动态内存分配来定义不确定长度的数组并赋值。
下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n; //输入的长度
printf("请输入数组长度:");
scanf("%d", &n);
int *arr = (int *)malloc(n * sizeof(int)); //动态分配内存
printf("请输入数组元素:");
for(int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("数组元素为:");
for(int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
free(arr); //释放内存
return 0;
}
```
在这个示例中,首先通过`scanf`函数获取需要定义的数组长度`n`,然后使用`malloc`函数动态分配`n`个`int`类型的内存空间,将其赋值给指针`arr`。用户输入每个元素的值后,使用循环遍历输出数组元素。最后,使用`free`函数释放分配的内存空间。