gpt4 book ai didi

c - 有没有办法完全清除数组?

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:01 24 4
gpt4 key购买 nike

“我正在尝试查找‘list[34]’数组的大小,但它是在程序初始化时由随机数设置的。我无法删除 main 中的 rand() 函数,因为它是问题,并在我提交时由解决方案检查器重新添加。

我已经尝试将数组中的所有值都设置为“0”,但是如果列表少于 35 个值,则会抛出“list_size”变量,因为列表只是填充了解析到其中的任何内容,然后是“0” ' 在所有其他值中。

#include <stdlib.h>
#include <float.h>

// Declare Global variables here.
double list[34];
int list_size;

void array_stats() {
// Insert your solution here.

for(int i = 0; i <= 35; i++)
{
scanf("%lf", &list[i]);

list_size = i;
if (list[i] == 0)
{
break;
}
}
}

#include <stdlib.h>
#include <time.h>

int main() {
// Simulate the test setup process.
srand( time( NULL ) );
for ( int i = 0; i < 34; i++ ) {
list[i] = rand();
}
list_size = rand();

// Call submitted code.
array_stats();

// Display contents of array list.
for (int i = 0; i < list_size; i++) {
printf("%f ", list[i]);
}

printf("\n");
printf("Item count: %d\n", list_size);

return 0;
}```

Expected result for an empty string (echo '' | file_name) is 0
Actual result for an empty string (echo '' | file_name) is 34

最佳答案

如果您在数组中使用了 int 数据类型:

memset(arr, 0, sizeof(arr));

但由于您不是,所以它有点棘手,清除 double 组的最佳方法是:

double list[34];
for (size_t i = 0; i < list; ++i)
arr[i] = 0.0;

理论上,将 memset 用于 float 和 double 应该是安全的,但请参阅 Is it legal to use memset(,0,) on array of doubles? 的答案中的注意事项如果你有一个非标准的浮点实现。

关于c - 有没有办法完全清除数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57343769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com