C语言 如何编写一个数组 使其能够读取任意数量的输入的元素

就是我输入几个数,它就读取几个数

动态数组+realloc函数即可,例子:

int *pn=(int *)malloc(5*sizeof(int));    printf("%p\n",pn);
    for(i=0; i<5; i++)
        scanf("%d",&pn[i]);
    pn=(int *)realloc(pn,10*sizeof(int));

追问

还没学过这个,能解释一下上面的各行什么意思吗

追答

int *pn=(int *)malloc(5*sizeof(int));//这个是动态分配5个数字大小的数组

pn=(int *)realloc(pn,10*sizeof(int));这个是在原来分配的地址上,重新分配10个数字大小的数组,相当于原来的数组变大了

追问

我是想让它
我输入几个数,它就读取几个数
比如 输入11 22 33 44 55
它就会 scanf上面5个数

追答

晕,数组不负责读入数据,只负责保存数据,既然你数据长度不固定,就必须用动态数组


直接用c++的vector得了,方便、简单:

#include<iostream>
#include<vector>
using namespace std;

int main(){
    vector<int> vint;
    int data;
    while(cin>>data) {
        vint.push_back(data);
    }
    return 0;
}

追问

可能我表达不太好。。。。就是 保存数据
那个程序怎么写啊C++没学。。。。

追答#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int *a;
    int n=0;
    int size = 5;
    int data;

    a = (int*)malloc(size*sizeof(int));
    while(scanf("%d", &data)!=EOF) {
        if(n==size) {
            size+=5;
            a = realloc(a,size*sizeof(int));
        }
        a[n++] = data;
    }

    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-28
可以使用动态数组来解决此问题,代码如下:
一维动态数组的创建
#include
#include
int main()
{
int n1,i;
int *array;
printf("请输入所要创建的一维动态数组的长度:");
scanf("%d",&n1);
array=(int*)calloc(n1,sizeof(int));
for(i=0;i
{
printf("%d\t",array[i]);
}
printf("\n");
for(i=0;i
{
array[i]=i+1;
printf("%d\t",array[i]);
}
free(array);//释放第一维指针
return 0;
}
第2个回答  2013-12-06
int n;
printf("输入你要需要的元素个数:\n");
scanf("%d",&n);
int *a = (int *)malloc(sizeof(int)*n);//头文件stdlib.h
if(!a)
{
printf("aply error\n");
exit(-1);
}
int i = 0;
for(i = 0;i<n;++i)
{
scanf("%d",a+i);
}

在C语言中怎样用数组实现键盘任意输入的10数,然后输出这10个数。
当然,我假设你输入的都是整数。

如何在C语言中读取数组中的数据?
在C语言中,可以通过以下方式读取数组中的数据:使用for循环:可以使用for循环遍历数组中的每个元素,然后读取每个元素的数据。例如:使用while循环:可以使用while循环遍历数组中的每个元素,然后读取每个元素的数据。例如:♡♡ 有帮助到的话,麻烦采纳哦!♡♡

C语言如何定义一个N行N列的二维数组任意输入数据
我可以肯定的告诉你,不可能在程序运行的时候决定一个二维数组的大小,因为数组的大小是在编译时就决定了的,不是在运行时,如果是一维的通过某些方法还可以办到,二维的就不可能了,拿一维的来说:polly@nowthen:~$ cat test.c#include <stdio.h>#include <stdlib.h>struct test { int num; ...

C语言如何输入一个数组
1、输入数组需要使用指针获取地址后,就能对得到的数组就行操作了。首先打开DEV C++软件,新建一个空白的C语言文件:2、输入程序的源码,先定义一个整型数组“a[5]”,采用scanf语句输入数组中的每个元素,这里使用指针来对输入的数字进行访问,要先给输入的每一个数字给予它的地址,便于访问,最后拿得到...

C语言怎么定义一个二维数组可以使每行的输入长度任意
1、使用动态数组可以实现变长度数组。建动态数组,其他就像数组一样使用就行了。2、例程:int row=0; \/\/函数int col=0; \/\/列数int i;int ** arr=NULL; \/\/下面假设存储的数据类型为intprintf(“请输入二维数组的行数和列数:”);scanf("%d%d",&row,&col);\/\/要不要加判断输入...

如何用c语言编写查询数组中的元素
参数介绍:a: 输入的数组,类型为整型指针,表示整型数组。可以根据实际需要进行调整。n:数组中现有元素的个数。v:要查询的元素值。返回值:整型,返回查询到的元素个数。如果出错返回-1。实现代码:int array_query(int *a, int n, int v) { int i,ret; if(a == NULL || n <= 0...

C语言怎么编写一个数组?
在 C 语言中,编写一个数组需要声明数组的大小和类型,然后为数组分配内存。以下是一个简单的示例,展示了如何声明和初始化一个整数数组:```c include <stdio.h> int main() { \/\/ 声明一个包含 10 个元素的整数数组 int arr[10];\/\/ 初始化数组的第一个元素为 10 arr[0] = 10;\/\/ 初始...

C语言编程实现:从键盘中输入任意一个多位的整数(位数不确定),将其每一...
思路:定义一个字符数组,利用该数组接收键盘输入的整数,接着依次遍历该数组并输出。参考代码:include "stdio.h"int main(){ int i;char a[100];gets(a);\/\/接收键盘输入 printf("%c",a[0]);\/\/先输出第一个字符 for(i=1;a[i]!='\\0';i++)\/\/接着输出各个字符 printf("$%c"...

用C语言编写程序,求一个数组a[5]的元素按照从大到小排序输出,要求随机...
void main(){ float x[5];int max;\/* 记录符合位置i的最大的数的位置*\/ for(int i=0;i<5;i++) scanf("%f",&x[i]);for(i=0;i<4;i++) \/* 有5个数,则需要查找从0—3位置的数,最后一个x[4]为仅仅剩下的一个,就不需要排序了*\/ { max=i; \/*认为当前i为最大的...

如何将n个输入的数存放在一个数组中
include<stdlib.h> void main(){ int *p, i, n;printf("输入数组元素个数: ");scanf("%d",&n);p = (int *) malloc(n * sizeof(int)); \/\/分配n段长度为存放int型长度的内存给p printf("\\n输入%d个整数: \\n",n);for(i=0;i<n;i++)scanf("%d",&p[i]);printf("\\n...

相似回答