C语言中如何求数组真实存有数据的元素个数

#include<stdio.h>#include<stdlib.h>#include<time.h>intmain(){inta[100];intn;inti;intl... # include <stdio.h>
# include <stdlib.h>
# include <time.h>
int main()
{
int a[100];
int n;
int i;
int len;
scanf("%d",&n);
for(i=0;i<n;i++)
{
a[i] = i;
}
len = (sizeof(a)/sizeof(a[0])); printf("%d",len);
}

比如说,上面这个代码,输出的len永远是100。但是其真正储存了数据的是其中的前N个元素,如何求这个N
展开
 我来答
彭彭丁满sky2
2013-06-20 · TA获得超过184个赞
知道答主
回答量:38
采纳率:0%
帮助的人:48.1万
展开全部

这个是比较容易解决的,这是我把楼主的程序略加修改后的代码:

# include <stdio.h>

# include <stdlib.h>

# include <time.h>

int main()

{

    int a[100];

    int n;

    int i;

    int len=0; //此行给len初始化;

scanf("%d",&n);

    for(i=0;i<n;i++)

    {

        a[i] = i;

++len; /*此处算是这个程序里面求数组a实际长度的要点了,

每循环一次,len的值就加1(从初始值0开始加的),所以当循环n次后,len就记下了数组的长度!*/

}

    //len = (sizeof(a)/sizeof(a[0]));因为只是为了让len表示数组a的值,所以为了求len不必采用这样的方法;

    printf("%d\n",len);//加个换行符输出时看的明显些;

}

这是我自己运行的结果,楼主可以自己运行着看看,这样输出的结果就是数组a的实际长度了:

楼主还有什么疑问可以尽情问,还有,以后若是想求一个数组的实际长度,且这个数组是字符数组时,楼主只需要在头文件中包含#include<string.h>后,就可以在求字符数组的实际长度时;用语句  int len;    //用于存储字符的实际长度;

            len=strlen(a),其中a是要求的字符数组的名称,不必加下标;很方便的,希望能帮到楼主哦。

百度网友d580670
推荐于2017-11-25 · TA获得超过1983个赞
知道大有可为答主
回答量:2054
采纳率:82%
帮助的人:706万
展开全部
一般的话可以用一个变量
或者另外一个数组记录
当前用了几个(顺序加入顺序移除)
或者另外一个同大小的数组来记录到底用了哪几个(随机加入随机删除)
anything a[n];
int used[n];
memset(used,0, sizeof(int)*n);
a[i] = ..;used[i]=1;
这样统计used就可以了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Kingson_Wu
2013-06-19 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:93
采纳率:100%
帮助的人:57.6万
展开全部
如果没有给a[100]的后面的元素输入数据,后面的元素也是有数据的,只是数据是随机的。
当你定义a[100]时。系统已经随机分配了数据。不信你不要赋值输出来看看。所以按照你那么说是算不了的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jufenghan
2013-06-19 · 超过22用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:60万
展开全部
你的意思是求数组中前n和非0元素个数?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式