C语言中,如何利用数组输入不知道个数的若干数,

如题。
比如说老师要录入学生成绩,但题目中没有给出学生的个数。。。
这样该怎样输入呢?
求指导啊。

数据结构里面,一般使用动态分配空间的方式,malloc首次分配和realloc重新分配更大空间。
你可以先malloc一个比较大点的空间,比如20个int的数组空间,当输入个数超过20时,realloc一片20+10的空间,也就是一次性增大10个int的空间,再输入到30个了,就再realloc一片30+10的空间。需要一个变量存贮当前最大空间,然后一个变量记录你输入了多少个数据。追问

有没有能不用指针部分的知识解决啊?

追答

没有
若是在C++里面,可以使用vector等容器,可以实现动态数组
在标准C语言里面,不使用指针和动态分配,没有直接办法实现任意大小的数据存储。
使用固定大小的数组,都是假设待输入数据个数不会超过设定的范围,才好提前分配,这样也可能浪费空间,万一实际输入就1个成绩,就浪费了大部分空间了。

使用指针的话,还可以使用链表,之前说的分配连续空间其实是顺序表。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-29
{ int Len; int i,a[Len]; printf("输入数组长度: \\n"); scanf("您说的是这个意思吗? 那你把数组设置的足够大不就行了么?比如说int,lkEBhI追问

额,不是不是,题目中事先没有给出输入数组长度的步骤,一开始就是输入数据,输完就结束了。。。。。

第2个回答  2020-11-24
用数组写,把他的元素定义得足够大。

C语言中,如何利用数组输入不知道个数的若干数,
在数据结构里面,一般使用动态分配空间的方式,malloc首次分配和realloc重新分配更大空间。你可以先malloc一个比较大点的空间,比如20个int的数组空间,当输入个数超过20时,realloc一片20+10的空间,也就是一次性增大10个int的空间,再输入到30个了,就再realloc一片30+10的空间。需要一个变量存贮当前最...

C语言中输入不确定个数的数值,要存入一个数组中,将数值按大到小排列...
include "conio.h"void main(){ int a[100];int i,j,n=0,tt,sum=0;printf("请输入若干整数,-1作为输入数据的结束\\n");scanf("%d",&tt);while(tt!=-1){ a[n]=tt;scanf("%d",&tt);n++;} printf("原来的次序\\n");for(i=0;i<n;i++)printf("%6d",a[i]);printf("\\...

用C语言实现从键盘上输入不确定个数的数字,将数字从小到大排序后输出...
对于输入的数据的个数不确定的情况,一般会预设一个特殊的非法值(这个值是属于论域之外的一个值)作为终止值,例如如果论域是正整数,则通常会将0作为终止值,即当输入0时结束,且0不作为有效数据。 因此如果你要输入的都是正整数,则程序可如下(对于其它情况可采用类似方法) #include <stdi...

C语言中如何给一个数组输入一组总数未知的数
int main(){ int a[1000];char c;int i=0;int n=0;while((c=getchar())!='\\n'){ if(isdigit(c)){ ungetc(c,stdin);\/\/将c送回输入流 scanf("%d",&a[n++]);} } for(i=0;i<n;i++){ printf("%d",a);} return 0;} ...

怎么用C语言的scanf实现一次输入若干个数据
根据需要一般选择如下3种方法:1,已知数量,且个数较少:scanf("%d%d%d",&a&b&c);2,已知数量,但数量较多:for(int i=0;i<n;i++)scanf("%d",&a[i]);3,不知道数量 int i=0;while(scanf("%d",&a[i])){ i++;}

C语言怎么让键盘输入数字到数组里,事先不知道要输入多少个数,按回车结...
include<stdio.h>int main(){int i,n=0,a[999];for(i=0;;i++){scanf("%d",&a[i]);n++; \/\/计算输入个数if(getchar()=='\\n')break; \/\/遇回车中断}for(i=0;i<n;i++)printf("%d ",a[i]);printf("\\n");return 0;} ...

C语言中,对于不知道长度的数组怎样输入。。。
1、一维数组程序举例:冒泡法。得到结果进行输出。二维数组常称为矩阵。把二维数组写成行列的排列形式,可以形象的理解二维数组的逻辑结构。2、C语言中不能定义未确定个数的数组,不过可以用指针来变相的完成你的要求。3、输入数组需要使用指针获取地址后,就能对得到的数组就行操作了。

c语言里怎样输入未知个数的的数据?是输入整形,每次输入的数都是随机...
你可以自己写一个函数,初始化一个整型数组,然后每次数据量大于这个数组容量时,在扩容 伪代码如下:1.初始化一个10位的整型数组 int[],i=0,size=10 2.输入时判断i<=size int[i]=input 3.如果i>size 4.新建一个int[size+5]的数组,并将前面的数据copy到这个新数组中 5.重复步骤2 ...

C语言中如何将未知个数的数存放在一个数组中?
你可以用malloc来实现。malloc是用于动态分配的,即可以在你需要的时候进行分配 函数返回分配地址的空间首地址,可以这样实现 int n;scanf("%d",&n);int *a=(int*)malloc(n*sizeof(int));malloc的参数是分配空间的大小,n*sizeof(int)表示分配n个整型的空间 因为malloc返回的首地址,但是类型是...

c语言数组个数未知如何处理呢?
获取c语言数组个数可以使用sizeof函数获取数组元素个数,具体如下:include "stdio.h"int main(){ int arr[100]={0};printf("数组大小=%d\\n",sizeof(arr)\/sizeof(arr[0])); \/\/输出变量c的值 return 0;} 运行结果如下:运行结果

相似回答