C语言中如何将未知个数的数存放在一个数组中?

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-05-01
C语言随机生成10个数并存放在数组中,求这十个数的累加和

C语言随机生成10个数并存放在数组中,求这十个数的累加和,可参考如下代码:
#include void main(){int a[10], i, sum = 0;srand(time(NULL));for (i = 0; i < 10; ++i){ a[i] = rand(); sum += a[i];}printf ("累加和为%d
", sum);}

用malloc函数。。。。
比如你要申请int型的未知个数数组。可以以下程序
#include
#include

main()
{
int *p;
int n;
printf("请输入录入个数N:
");
scanf("%d",&n);
p = (int *)malloc(n*sizeof(int));
//然后把*p当作数组指针用就可以了。。~~~~
}

在C语言中数组的定义必须指明维数,即使没有指明维数,也必须进行初始化,编译器通过初始化列表中的元素个数来确定数组的维数,比如下面的代码:

int a[] = {1,2,3}; 

虽然没有指明数组的维数,但是编译知道数组a的维数是3(只有三个元素)。


要实现未知个数的元素存储于数组中,可以使用malloc()和free()来进行动态内存分配 。下面是一个使用动态内存的示例:

 
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>

int main()
{
int size;
printf("输入建立元素的个数:");
scanf("%d",&size);
int *p = (int *)malloc(sizeof(int) * size);
if (p == 0) {
printf("不能分配内存
");
return 0;
}

//初始化内存
memset(p, 0x00, sizeof(int) * size);
//释放内存
free(p);
return 0;
}


因为数组的内存空间是连续的,所以可以直接用指针来操纵。用指针的方法叫动态数组。
如你那题。
struct information *student;
int n = 0;
scanf("%d", &n);
student = (stuct information *)malloc(n * sizeof(struct information));
这样就分配了一个可以存储n个结构体对象的空间了,把这个空间的地址存储在指针变量中。
这个空间就和数组的空间是一样的(连续n个结构体对象),所以就可以通过操纵指针来操纵空间了。
可以用student[1].name student[2].name这样的形式, 也可以用*(student + 3).name这样的形式。 可否明白。

其实看到你这个问题的时候我兴奋了一下,我以为会有人来解。但是,还没有人给答案,这样的思考我也思考了很久,可是好像在C或C++里面都不行吧……如果有人能做到请告诉我一下,对了我是学生,以后专业上的知识可以多交流一下,QQ826266386网名就是我的真实名字

#include "stdio.h"
#include "string.h"
#include "dir.h"

void main()
{
char filename[500][60];
int i,num=0,done;
struct dfree dfree;
struct ffblk ffblk;

done = findfirst("*.txt",&ffblk,0);
while (!done)
{
strcpy(filename[num], ffblk.ff_name);
num++;
done = findnext(&ffblk);
}
for(i=0; i<num;i++)
printf("%s\n",filename[i]);
}


动态内存分配

  • C语言中,如何把几个数组的值保存到一个数组里
    答:定义一个大一点的数组,然后把所有的数组循环赋值给你定义的这个数组就行了啊,只不过是大的这个数组的下标一直往上加。include<stdio.h> int main(){ int x[200];int a[20],b[20],c[20];int i=0,j;for(j...
  • c语言中如何把输入的数放到一个变量中
    答:include "stdio.h"int main(int argc,char *argv[]){int a,x,i;for(a=i=0;i<4;i++){scanf("%d",&x);printf("a = %d\n",a=a*10+x);}return 0;}运行样例:...
  • c语言从键盘输入5个整数并保存到数组中,求该5个整糖的最大值,最小值...
    答:接下来,使用for循环遍历数组,找出最大值和最小值。在这个例子中,我们将第一个数作为初始值,然后依次比较后面的数,更新最大值和最小值。最后,再使用for循环计算5个整数的和,并根据公式`average = sum / 5`计算...
  • 在c语言中怎么输入一组数字存储在数组里
    答:define N 100 int main(){ int iarray[100];int num;for(int i = 0; i < N; i++){ iarray[i] = i*2;} printf("请输入一个数字:");scanf("%d", &num);int first = 0;int last = N-1;int ...
  • c语言 读入未知行 未知个数的整数
    答:单纯地读入未知行和未知个数,那就只能在while循环里实现了。每行的每个数放入数组里(大小加大点),或者每次动态申请内存(这样节省空间)来存放。这样要结束的话需要有结束的标志。一般都是设置两个个宏来定义一个数值,...
  • c语言 如何从键盘中输入若干个数保存到数组中
    答:1、首先在电脑中打开编译器(vc++6.0),新建一个将1到100保存到数组中项目,如图所示。2、添加一个 assignment.c 文件,如图所示。3、包含stdio.h和stdlib.h头文件,如图所示。4、输入main函数主体及返回值,如图所示。
  • C语言中如何读取TXT文件中某一列的数据存放到一个一维数组中?
    答:for (i=0;i<n;i++) printf("%lf\n",a[i]); //输出读到的数 return 0;} 每行数据个数 不等 的时候,可以用:fgets() 一行一行地读 行, 存入 s[2000],用 sscanf() 从s[] 里用格式 "%*d %lf...
  • C语言,编写函数,将一个整数插入到一维数组的指定位置,并在主函数中调用...
    答:a[i]=i+1;printf("原有的数字:\n");for(int i=0;i<n;i++)printf("%d ",a[i]);printf("\n");printf("要插入的数字:");scanf("%d",&x);printf("要插到第几个位置:");scanf("%d",&k);insert...
  • 如何将n个输入的数存放在一个数组中
    答:include<stdio.h> include<stdlib.h> void main(){ int *p, i, n;printf("输入数组元素个数: ");scanf("%d",&n);p = (int *) malloc(n * sizeof(int)); //分配n段长度为存放int型长度的内存给p pr...
  • c语言,如何将键盘输入的n个整数存入一个数组中,n的大小未知
    答:1、可以预先定义足够大的数组(浪费在所难免),然后将键盘输入的整数存入数组,并累计数据个数。...int i,n = 0,a[1024]while(1) { printf("输入整数(q: 结束输入过程)%d : ", n + 1);if(scanf("",&a[n]...