c++数组输入,但是元素的总个数未知
答案:2 悬赏:20
解决时间 2021-03-22 21:05
- 提问者网友:很好的背叛
- 2021-03-22 09:55
这样来的话for是用不了了,我想到了while循环,但是终止条件不好写,我又想到用最后那个数字作为终止条件,但是也存在可能有多个那个数字存在于元素中,这样就很纠结了,像#这些字符又不能作为终止符,恳请路过的大婶们不吝赐教!
最佳答案
- 二级知识专家网友:孤伤未赏
- 2021-03-22 10:12
#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;
}
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;
}
全部回答
- 1楼网友:woshuo
- 2021-03-22 10:47
如果数组的元素个数不知道的话,只能通过动态内存分配了,静态内存分配是没有办法实现的,因为静态内存分配在定义数组的时候必须指定数组的大小为一个常量或者常数,例如: 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指针中
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯