中易网

c++数组输入,但是元素的总个数未知

答案:2  悬赏:20  
解决时间 2021-03-22 21:05
这样来的话for是用不了了,我想到了while循环,但是终止条件不好写,我又想到用最后那个数字作为终止条件,但是也存在可能有多个那个数字存在于元素中,这样就很纠结了,像#这些字符又不能作为终止符,恳请路过的大婶们不吝赐教!
最佳答案
#include
using namespace std;
int main()
{
int a[15]={ 0 }, n;
while(true)
{
cout<<"请输入个数:";
cin>>n;
if(n>0 && n<15)break;
}
for(int i=0;i {
cin>>a[i];
}
int sum(int a[], int n);
int sums = sum(a, n);
cout<<"sum="<

int sum(int a[], int n)
{
int m =0;
for(int i=0;i {
m+=a[i];

return m;
}
全部回答
如果数组的元素个数不知道的话,只能通过动态内存分配了,静态内存分配是没有办法实现的,因为静态内存分配在定义数组的时候必须指定数组的大小为一个常量或者常数,例如:
int array[10];
或者
const int size=10;
int array[size];

当然你可以采用常量的方法,但是就是每次必须打开源代码来调整这个数组的大小,很不方便,所以要采用动态内存分配的方法;

在c语言中: 
int arraysize;//元素个数
printf("请输入数组的大小:");
scanf("%d",&arraysize);

int *array;//用指针指向一个数组
array=(int *)malloc(arraysize *sizeof(int));//动态内存分配
....
free(array);//最后要释放这个空间,用完了,当然要还给系统

malloc()函数在内存堆区中寻找未被使用的内存,找够所需的字节数后返回该内存的起始地址。
所需字节数通过参数知道,在本例中arraysize元素个数,乘以每一个元素的字节数,等于总的字节数;
每一个元素的字节数通过测字节sizeof()运算符得到,元素的数据类型为int,所以测int类型需要多少字节。
malloc()函数并不知道用这些内存干什么,所以返回一个没有类型的指针,但对于整型指针array来说,malloc()函数得返回值必须显式转换成整型指针才能被接受。所以前面加了一个(int *)。

在c++中就可以不用malloc()函数和free()函数了。
int arraysize;//元素个数
cout<<"请输入数组的大小:";
cin>>arraysize;

int *array;//用指针指向一个数组
array=new int[arraysize]; //动态内存分配
....
delete []array;//最后要释放这个空间,是一组空间所以加了[]。

array=new int[arraysize]; 
new表示申请空间;什么类型?int;多大?arraysize
返回该内存的起始地址存到array指针中
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
黑龙江省商务学校的邮编是什么
工资打卡1400左右 银行流水月平均1-3万 一年
怎么进行用友新道杯会计线上练习
OPOPPR2017支持3G网络吗,请支教谢谢
九龙峪作文四百字加感想
自己怎么做淘宝推广优惠卷?如图
从天津北辰小淀做地铁几号线就到西青张家窝杰
春季什么时候适合泡温泉?
门前栓马非为富,家中有人不算穷的意思
9999+999+99+9+6 怎么算
远程服务支持库的处理方式是并行好还是串行好
一汽丰田锐志到底怎么样
辉南县朝阳镇去通化市二密化肥厂之间有多少距
上海哪里有卖明治1段奶粉?急
我刚买的笔记本,刚刚看了眼能耗是35kwh!!
推荐资讯
安阳卡通卡乐招聘?
信用卡做了分期,剩余款项还进去后,可取余额
用桌面上的坦克世界图标打不开游戏,一点启动
哪里有玉石雕刻培训?
引用CSS,运行HTML 不显示效果
可以查询男友婚姻状况吗
2011年6月5买格力空调到现在保修期过了没有
黑土豆多少钱一斤
韩版宽松短袖t恤矮个子可以穿吗
界首市有多少人口
朋友和他女朋友在我家干那种事会不会倒霉
我的外国朋友用英语怎么说??
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?