C++中,怎么求整型数组的实际长度?

以下面的代码为例:inta[20];cin>>a[20];//在这个代码中,假设我只输入了6个数字,请问下我要怎么求得数组a的实际长度呢PS:用intlen=sizeof... 以下面的代码为例:
int a[20];
cin>>a[20];
//在这个代码中,假设我只输入了6个数字,请问下我要怎么求得数组a的实际长度呢
PS:用int len=sizeof(a)/sizeof(int)求得的值还是20
谢谢网友的提醒!
换个角度,我在不知道实际会输入多少个数字的前提下(n<20),要怎么输入数字才能知道数组的实际长度呢?
展开
 我来答
百度网友3763577
推荐于2017-09-01 · TA获得超过119个赞
知道答主
回答量:30
采纳率:0%
帮助的人:8.1万
展开全部
首先,cin>>a[20]; 这样是不行的。这样写相当于只输入数组的第21个数,超出了数组的最大范围了。20个数据的数组,最大下标是19
其次,数组定义的时候,如果 没有赋初值,那么系统会自动给所有数组元素自动赋值0
再次,想要求数组长度可以这样:
int a[20];
int len;
len = sizeof(a);

这样求出来的值会是80,因为int数据占4字节,20个就是80字节

数组的长度和你是否输入数组的值无关,反正定义时没给初值就自动赋值0的
只要是int型的数组,每个元素都是4字节。
追问
比如题目是:
输入2个输入文本(n<20)
1 2 3 4 5
1 2 3 4 5 6
求用户键入的数字有多少
我的代码定义一个int a[20],
请问下我应该怎么编写这个程序呢
追答
建议你用字符串来存输入的文本  string
然后遍历字符串,统计数字个数
icelbja
2014-03-31 · TA获得超过138个赞
知道小有建树答主
回答量:180
采纳率:100%
帮助的人:151万
展开全部
这个 你可以定义一个 int nSzie= 0;
每插入一个数nSzie+1;
或者自己写一个函数,遍历一下数组,就可以得到其大小。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
松甜恬0Je4ba
2014-03-31 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:3414万
展开全部
首先整型数组不能这样输入:
int a[20];
cin>>a[20];

所以,你这个问题的前提就不对了。首先你应该知道输入多少个整数,循环获得输入。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a1e25cc
2015-12-15 · TA获得超过2585个赞
知道小有建树答主
回答量:595
采纳率:66%
帮助的人:179万
展开全部
其实,你看一下下面这段代码,可以求出整形数组的实际长度
#include<iostream>
using namespace std;
int main()
{
int length = 1;
int a[10] = { 0 };
a[0] = 1;
a[1] = 2;
for (int i = 1; i < 10; i++)
{
if (a[i])
length += 1;
}
cout << length << endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3760ca1c6
2014-03-31 · TA获得超过156个赞
知道小有建树答主
回答量:247
采纳率:0%
帮助的人:86.6万
展开全部
不行吧,还没发现有什么办法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式