c语言 如何从键盘中输入若干个数保存到数组中
程序代码:
#include<stdio.h>
#define N 10
int main()
{int a[N]={0};
int i=0;
for(i=0;i<N;i++)
{scanf("%d",&a[i]);}
for(i=0;i<N;i++)
{printf("%d ",a[i]);}
return 0;
}
扩展资料:
C语言中数组的输入和存放可通过scanf()函数来实现。首先要定义一个数组a[],根据需要定义数组类型,必须定义数组长度,可使用宏定义#define N 10来定义数组长度,方便在修改,也可直接定义为a[10];通过for循环依次将数据存入数组,键盘输入时数据之间以空格间隔。
数据存入数组后可进行调用,这里以printf()函数调用输出为例,输出格式要记得加空格使数据隔开,避免数据连在一起。
从键盘输入若干数据到数组中,可选用的方法:
预估最大数据个数,按此数值定义数组空间,完成数据输入
#define MAX_NUM 1000
int a[MAX_NUM]; 这种方法定义数组,方便,安全。缺陷是数组空间大小受系统限制,数据太多了,就不能这样定义了。
运行时,确定输入数据个数,采用指针动态定义数组,或C99提供的动态数组的方法实现
int *p;
int n; printf ("input n: "); scanf("%d", &n); //输入数据个数
(1)p=(int *)malloc(n*sizeof(int) ); //动态分配空间 不用了记得要释放free(p)
或
(2)int pa[n] ; //C99支持的动态数组,按n值动态定义数组
还可以采用指针动态扩充数组方法:先分配一定的大小,当数组不够用时,再重新分配空间。
#define INIT_LEN 100 预分配空间
#define INCE_LEN 10 每次扩充空间
int *p=(int *) malloc(INIT_LEN *sizeof(int) );
int length=INIT_LEN ;
不足时, length+=INCE_LEN ; p=(int *)realloc( p, length) ; //扩充空间
while(scanf("%d",&x)!=EOF)
{
a[i]=x;
i++;
}//这样是输入文件结束后停止输入
或者是
int a[100],i=0;
while(scanf("%d",&x)!=-1)
{
a[i]=x;
i++;
}//这样的话就是输入-1时停止输入
不能有啊a[100],要任意多少个数,输入多少个数。a[n]中的n就是多少?
骚年,这是不可能滴,计算机内存是有限的,数组只能定义一个固定值,不然的话要用链表(虽然也不可以输无限多个数)。像这种问题,一般都是这么写的
#define MAXSIZE 10000 //在这里定义大小,以后修改会方便点
int a[MAXSIZE],i=0;
while(scanf("%d",&x)!=-1)
{
a[i]=x;
i++;
}
数组大小定义好像是最大可以定义几百万吧,你把MAXSIZE 定义为10000 ,基本就不会越界了