我必须使用函数minmax(double * x,double * y)输入数组的最小值和最大值。
当我编译它时,会出现一些奇怪的错误:minmax的参数1的类型不兼容; minmax参数2的类型不兼容。但是idk哪里出错了。请解释
问题是输入从文件输入的数组的最大值和最小值。我用一些值填充了文件。
然后从最小到最大对它们进行排序。
#include<stdio.h>
#include<math.h>
void input (int *psize, double arr[]);
void output (int size, double arr[]);
void minmax (double *x, double *y);
int sorting(int size, double arr[]);
int main(){
double arr[100];
int size,i;
input(&size,arr);
output(size, arr);
printf("\n");
sorting(size, arr);
output(size, arr);
minmax(arr[0],arr[size-1]);
}
void input (int *psize, double arr[]){
FILE *array;
array = fopen("12_3.txt", "r");
int t_size=0;
if (array == NULL){
printf("CANNOT OPEN FILE");
exit(1);
}
if (array!=NULL)
{
while( !feof(array))
{
fscanf(array, "%lf", &arr[t_size]);
t_size++;
}
*psize=t_size-1;
fclose(array);
}
}
void output (int size, double arr[]){
for (int i=0; i<size; i++)
{
printf("%f \n",arr[i]);
}
}
void minmax (double*x, double*y){
printf("\nmax: %f\n", *x);
printf("min: %f\n", *y);
}
int sorting(int size, double arr[]){
for (int i = 0; i < size - 1; i++)
{
for (int j = 0; j < size - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
最佳答案
minmax()
的参数-y
和x
-具有指向double
(double *
)的指针。
调用arr[0]
时arr[size-1]
和minmax()
的参数类型为double
。
不匹配。指向double
和double
的指针。
在*
的定义/声明中,省略x
和y
的minmax()
运算符:
void minmax (double x, double y) { ...
以及
printf()
调用时的参数:printf("\nmax: %f\n", x);
printf("min: %f\n", y);
结果:
void minmax (double x, double y); // Function prototype.
....
void minmax (double x, double y) { // Function definition.
printf("\nmax: %f\n", x);
printf("min: %f\n", y);
}
关于c - 错误: incompatible type for argument in c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62132173/