对此是新手,并尝试编写代码以查找带有头文件的2个数字之间的最大值和最小值。我很确定我做错了,所以如果有人可以帮助我,那将非常有帮助
#include <stdio.h>
#include <maxmin.h>
int main()
{
//declare variables
float maximum;
float minimum;
float n1;
float n2;
//get numbers
printf("Enter two numbers:");
scanf("%f%f",&n1,n2);
//call functions
maximum= max(n1, n2);
minimum= min(n1, n2);
//print results
printf("maximum= %f\n", max);
printf("minimum= %f\n", min);
return 0;
}
这是头文件:
// function to find max
float max(float n1, float n2)
{
return(n1>n2) ? n1 : n2;
}
//function to find min
float min(float n1, float n2)
{
return(n1 > n2) ? n2 : n1;
}
答案 0 :(得分:1)
当您尝试访问非法内存时导致分段错误。造成这种情况的一些常见原因是尝试访问不存在的数组的索引(例如,尝试访问仅包含两个元素的数组中的第三个元素)或尝试访问尚未初始化的变量。有关详细说明,请参见this答案。
在您的情况下,您正在尝试访问未初始化的变量。
这些行...
printf("Enter two numbers:");
scanf("%f%f",&n1,n2);
对此...
printf("Enter two numbers:");
scanf("%f%f",&n1,&n2);
您在&
之一前面缺少n2
。
并更改这些行...
printf("maximum= %f\n", max);
printf("minimum= %f\n", min);
成为这个...
printf("maximum= %f\n", maximum);
printf("minimum= %f\n", minimum);
在您的代码中,max
和min
是在maxmin.h
中定义的函数,而maximum
和minimum
是您在初始化时写入的变量正在计算最大值和最小值。