如何输入未确定长度的数组

如何输入未确定长度的数组

今天用许久未碰的C语言写数据结构作业时遇到了这个问题,在不确定要输入的整型数组长度时我们应该如何输入,并用回车结束输入?如:LA=(3,5,8,11),LB=(2,6,8,9,11,15,20)
在这给出两种解决办法

	int count=0;
	int a[1024]={0};
	while(1)
	{
		scanf("%d",&a[count]);/*这里其实有个bug,如果你输入的是一个空
		数组,即直接回车的话程序会卡在这里,因为scanf需要接收到一个整型数据*/
		count++;
		if(getchar() == '\n')//遇到换行时跳出循环
		{
			break;
		}
	}
	for(temp=0;temp<count;temp++)//打印结果
	{
		printf("%d ",a[temp]);
	}
	printf("\n%d",count);

如果你不希望在while循环中再进行判断,那么可以使用do while

	int count=0;//count用于计数
	int a[1024]={0};
	do//注意,不能直接使用while(getchar!='\n),而应该使用do while,
	//因为前者会导致第一个数据丢失(程序运行先进入判断条件第一个数字被getchar拿走)
	{
		scanf("%d",&a[count]);
		count++;
	}while(getchar()!='\n');//遇到换行时结束循环
	for(temp=0;temp<count;temp++)//打印结果
	{
		printf("%d ",a[temp]);
	}
	printf("\n%d",count);

LA正常运行
LB正常运行

以上也只是我临时查阅资料,经过调试之后总结出来的,限于知识水平难免有错漏之处,请多指正包涵。

C语言中如何输入不定长数组? 要实现不定长数组输入,可以借助动态内存分配的函数来实现。首先,需要在程序中使用指针来表示数组,并使用动态内存分配函数来分配内存空间。 以下是一个简单的示例代码: ```c #include <stdio.h> #include <stdlib.h> int main() { int* arr; // 声明一个指针来表示数组 int size; // 用来存储数组的大小 printf("请输入数组的大小:"); scanf("%d", &size); // 使用malloc函数来分配内存空间 arr = (int*) malloc(size * sizeof(int)); if (arr == NULL) { // 判断内存是否分配成功 printf("内存分配失败!"); return 1; // 返回错误码1,表示程序异常终止 } printf("请输入数组的元素:"); for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); // 逐个输入数组元素 } printf("数组元素为:"); for (int i = 0; i < size; i++) { printf("%d ", arr[i]); // 逐个输出数组元素 } // 使用free函数释放动态分配的内存空间 free(arr); return 0; // 返回0,表示程序正常终止 } ``` 在上述代码中,首先声明一个指针arr,用来表示数组。然后,使用malloc函数根据用户输入数组大小动态分配内存空间。在输入数组元素时,使用for循环逐个接收用户的输入。最后,使用for循环逐个输出数组元素,并使用free函数释放动态分配的内存空间。 需要注意的是,在使用完动态分配的内存空间后,一定要使用free函数来释放该空间,以免造成内存泄漏。同时,还应该进行错误处理,判断内存分配是否成功。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值