[英]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.