函数和指针帮助:程序生成,但崩溃,没有任何特定错误
Functions and Pointer help: Program builds but Crashes without any specific errors
我正在做一个硬件作业,我一直遇到崩溃,但我没有得到任何错误它只是崩溃。我创建了 2 个函数来尝试计算最大值、最小值和平均值,创建了 1 个函数来生成 3 个随机数并将其发送回 main。函数中的所有值都需要作为指针返回。感谢您提前提供的帮助!
int * random_number()
{
static int num[3];
for(int i = 0; i < 3; i++){
num[i] = (10 + rand() % 90);
}
return num;
}
int * calculate(int *value)
{
static int ans[3];
int max = 0;
for (int i = 0; i < 3; i++)
{
ans[0] += value[i];
ans[0] = ans[0] / i;
if (value[i] > max)
{
ans[2] = max;
}
int min = value[0];
if (value[i] < min)
{
ans[3] = min;
}
}
return ans;
}
int main() {
srand(time(NULL));
int cnt = 0;
int *result;
int *find;
do{
result = random_number();
find = calculate(result);
cnt++;
}
while(cnt < 10);
if (cnt == 10){
printf("Result is %i, %i, %i.", result[0],result[1],result[2]);
printf("The avg is %i. The max is %i and the min is %i.", find[0], find[1], find[2]);
printf("Worked n");
}
else
printf("Didn't work");
return 0;
}
你的calculate()
函数有很多错误——主要是你试图在for
循环中做一些应该在它之外完成的事情。 你得到的崩溃来自以下行:
ans[0] = ans[0] / i;
。当i
在第一个循环通道上为零时(因此您除以零(。 该除法实际上应该在循环之后完成,在所有值都相加之后(并且将始终是除以 3(。
该行:
int min = value[0];
也应该移动到循环之前; 事实上,您在每次循环传递时重置min
的值,因此您实际上最终得到的最后一个值小于 value[0]
,如果有的话......如果没有,你根本不会改变ans[3]
。 反正ans[3]
应该ans[2]
... ans[3]
是越界的(将是第 4 个元素(。
相关文章:
- 类和构造函数中的函数根本不起作用,并且不返回任何错误
- 如果用户没有输入任何内容或输入错误,如何重新输入用户的输入?
- 我正在尝试一个傻瓜 C++ 练习,我遇到了一个错误,说类 'GraduateStudent' 没有任何名为 'advisor' 的字段
- 零四元数和任何向量都不为零的特征积,这是一个错误吗?
- 编译器错误(英特尔并行工作室 2019 与 Visual Studio 社区 2019)
- 如何用 C 编译,但如果使用任何C++,则会抛出错误?
- 编译器没有显示错误,但我没有得到任何输出.怎么了?
- MSVC 错误:4 个重载中的任何一个都无法转换所有参数类型
- 我的代码中是否有任何类型的错误,因为它没有给出正确的输出
- 为什么当我没有变量或其他任何命名的东西时"no match for 'operator==' "错误?
- boost::p rogram_options 在指定意外的位置参数时不报告任何错误
- Antlr cpp 运行时 任何错误的指针转换?
- 函数和指针帮助:程序生成,但崩溃,没有任何特定错误
- 无法编译任何C++程序;错误:未知类型名称'uint8_t'
- 无法在vs2012中生成任何c++项目.错误LNK1327:rc.exe
- 声明不声明任何[-fpermission]错误
- 我的C++从文本文件读取的程序无法正常工作,但我没有看到任何代码错误?
- 在c++中使用同一个fstream对象进行读写时,是否有任何导致错误的特性
- 我没有任何编译错误,但我的代码不起作用。怎么了?
- 捕获 Segfault 或任何其他错误/异常/信号C++例如在 Java 中捕获异常