小弟的想法是,首先动态申请一个int字节内存,存个数,然后循环输入数字,循环申请int字节内存
问题是 我试了好多方法,始终写不出正确的判断输入结束的语句,望指教!谢了
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
void main()
{
int *p=NULL,m=0;
int i=0,n=0;
p=(int *)malloc(sizeof(int));
*p=0;
p++;
while('EOF'!=scanf("%d",&m)) // 判断输入的结束 就在这不知道怎么写 请指教
{
p=(int *)malloc(sizeof(int));
*p=m;
n++;
p++;
}
for(i=0;i<=n;i++) //让P指向数组起点
{
p--;
}
for(i=0;i<n;i++)
{
printf("%d ",*(p+i));
}
free(p);
}
----------------解决方案--------------------------------------------------------
有点不明白楼主的意思.不清楚要怎样的动态.
scanf("%d",&a[0]);
for(int i=1;i<=a[0];i++)
{
scanf("%d",&a[i]);
}
----------------解决方案--------------------------------------------------------
就是输入一连串的数字,然后存在一个动态数组,也许是我的想法走歪了,我只是想输入一个数字,随即在动态数组申请内存存下这个数字,再输入再申请内存,我不知道怎么结束输入。。。
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
void main()
{
int *p=NULL,x=0,m=0;
int i=0,n=0;
p=(int *)malloc(sizeof(int));
*p=0;
p++;
while(EOF!=(scanf("%d",&m))) // 判断输入的结束 就在这不知道怎么写 请指教
{
if(x==0)
{
x=m;
}
if(n>=x)
{
break;
}
p=(int *)malloc(sizeof(int));
*p=m;
n++;
p++;
}
for(i=0;i<=n;i++) //让P指向数组起点
{
p--;
}
for(i=0;i<n;i++)
{
printf("%d ",*(p+i));
}
free(p);
}
----------------解决方案--------------------------------------------------------
这个x有什么作用 看不太懂
----------------解决方案--------------------------------------------------------
接收第一个数作为以后元素个数的结束标志.
----------------解决方案--------------------------------------------------------
if(n>=x)
{
break;
}
元素个数n大于结束标志,跳出循环,明白斑竹的意思,关键是我开始也不知道将要输入几个数字,第一个输入的m值就是整数了,个数是我去计算,斑竹有其他好的算法么
----------------解决方案--------------------------------------------------------
这个n不是计算以后要输入元素的个数吗?
----------------解决方案--------------------------------------------------------
是,每输入一个数字,n自动加1,x==m,是把第一个m给x,如果按斑竹设置结束标志,此时第一个m 应该是后面将要输入的元素个数吧,题目是要求一开始输入的便是要存到动态数组的数字,个数和输入者输入有关
----------------解决方案--------------------------------------------------------