繁体   English   中英

C中浮点数组中的元素数

[英]Number of elements in float array in C

我在 C 中有一个浮点数组。这个数组的长度取决于用户输入。 我需要找出这个数组中的元素数。 例子:

float a[10] = {3.1314, 1.5131, 9.133,  10.333}

我如何检查元素的数量? sizeof(a)/sizeof(a[0]) 总是给出元素的最大数量(在这种情况下为 10)。

根据定义,类型为T[N]的数组中的元素数为N 所以你的float[10]类型的数组有 10 个元素,前四个被设置为一些值,其余的被设置为0.0f 如果您想检查已设置的元素数量,则必须将其余元素设置为某个标记值,该值不是“设置”的有效值。 或者您可以单独跟踪集合元素的数量。

正如其他人所说,使用 sizeof 不会成功。 例如,sizeof(a)/sizeof(float) 只会给你 10。

我会使用一个缓冲区结构:

#define MAX_NBR_OF_ELEMENTS 10

typedef struct {
    float a[MAX_NBR_OF_ELEMENTS];
    size_t count;
} FloatBuffer;

对于每个用户输入的浮点数,将其添加到结构体数组并增加计数以跟踪已输入到数组中的浮点数。

FloatBuffer floatBuff;

void AddFloatToBuffer(float val)
{
    if(count < MAX_NBR_OF_ELEMENTS)
    {
        floatBuff.a[count] = val;
        floatBuff.count++;
    }
}

sizeof(a)/sizeof(a[0])

会给 10 因为

float a[10] = {3.1314, 1.5131, 9.133, 10.333}

将所有非显式(其他)元素初始化为0.0f

你将有迭代找到非零元素

您声明了一个数组10 float 这意味着这个数组将包含10 float元素。 Initializer 将使用提供的值初始化其四个元素,默认情况下将使用0.0初始化其余元素。

尝试这个:

 void numel(int array1[100][100])
    {
        int count=0,row,column;
        for(int i=0;i<100;i++)
        {
            for(int j=0;j<100;j++)
            {
                if(array1[i][j]!='\0') 
                {
                    count++;
                    //printf("\n%d-%d",array1[i][j],count);
                }
                else 
                {
                    column++;
                    break;
                }
            }

    }   
    printf("count=%d",count);
}
int main()
{   
    int r,arr[100][100]={0},c;
    printf("Enter the no. of rows: ");
    scanf("%d",&r);
    printf("\nEnter the no. of columns: ");
    scanf("%d",&c);
    printf("\nEnter the elements: ");
    for(int i=0;i<r;i++)
    {
        for(int j=0;j<c;j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    numel(arr);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM