error: passing 'float [4]' to parameter of incompatible type 'float'
error: passing 'float [4]' to parameter of incompatible type 'float'
我必须创建一个名为 print_array 的函数,它接受两个参数:一个浮点数组和一个整数(表示数组的长度)。该函数应将整个浮点数数组打印到两位小数的精度。例如,
float a[] = {1.555, 3, 1.645, 178};
print_array(a, 4);
它应该给出:
1.55, 3.00, 1.64, 178.00
我的代码如下(有点乱):
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
int times_two(int a);
void print_int(int a);
int half(int a);
void print_float(float a);
void max(float a);
float average(float a);
void print_array(float a, int b);
int main (void)
{
int z = get_int("First Value for exercise 3? ");
int g = get_int("Second Value for exercise 3? ");
int max_value_1 = get_int("First Value (max) for exercise 4? ");
int max_value_2 = get_int("Second Value (max for exercise 4? ");
int x = 2;
int y = half(x);
float q = average(z + g);
print_int(y);
print_float(2.7444);
print_float(q);
if(max_value_1 > max_value_2 || max_value_1 == max_value_2)
{
max(max_value_1);
}
else
{
max(max_value_2);
}
float a[] = {1.555, 3, 1.645, 178};
print_array(a, 4);
}
float average(float a)
{
return a / 2;
}
int times_two(int a)
{
return a * 2;
}
int half(int a)
{
return a / 2;
}
void print_int(int a)
{
printf("Value Exercise 1 = %i\n", a);
}
void print_float(float a)
{
printf("Value Exercise 2/3 = %.2f\n", a);
}
void max(float a)
{
printf("Value Exercise 4 = %.2f\n", a);
}
void print_array(float a, int b)
{
printf("Value Exercise 4 = %.2f\n", a);
}
由于某些其他原因,我收到此错误并且真的不知道如何修复它们,因为我是“'functions'”的新手:
functions.c:37:17: error: passing 'float [4]' to parameter of incompatible type 'float'
print_array(a, 4);
^
functions.c:13:24: note: passing argument to parameter 'a' here
void print_array(float a, int b);
^
1 error generated.
void print_array(float a, int b);
这一行表示 print_array
的第一个参数是 float
.
float a[] = {1.555, 3, 1.645, 178};
print_array(a, 4);
此行将数组作为第一个参数传递给 print_array
。这与前面显示的第一个参数是 float
.
的行不一致
这正是错误告诉您的内容。
解决此问题的第一步是更改此内容:
void print_array(float a, int b);
类似于:
void print_array(float a[], int b);
或
void print_array(float *a, int b);
我必须创建一个名为 print_array 的函数,它接受两个参数:一个浮点数组和一个整数(表示数组的长度)。该函数应将整个浮点数数组打印到两位小数的精度。例如,
float a[] = {1.555, 3, 1.645, 178};
print_array(a, 4);
它应该给出:
1.55, 3.00, 1.64, 178.00
我的代码如下(有点乱):
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
int times_two(int a);
void print_int(int a);
int half(int a);
void print_float(float a);
void max(float a);
float average(float a);
void print_array(float a, int b);
int main (void)
{
int z = get_int("First Value for exercise 3? ");
int g = get_int("Second Value for exercise 3? ");
int max_value_1 = get_int("First Value (max) for exercise 4? ");
int max_value_2 = get_int("Second Value (max for exercise 4? ");
int x = 2;
int y = half(x);
float q = average(z + g);
print_int(y);
print_float(2.7444);
print_float(q);
if(max_value_1 > max_value_2 || max_value_1 == max_value_2)
{
max(max_value_1);
}
else
{
max(max_value_2);
}
float a[] = {1.555, 3, 1.645, 178};
print_array(a, 4);
}
float average(float a)
{
return a / 2;
}
int times_two(int a)
{
return a * 2;
}
int half(int a)
{
return a / 2;
}
void print_int(int a)
{
printf("Value Exercise 1 = %i\n", a);
}
void print_float(float a)
{
printf("Value Exercise 2/3 = %.2f\n", a);
}
void max(float a)
{
printf("Value Exercise 4 = %.2f\n", a);
}
void print_array(float a, int b)
{
printf("Value Exercise 4 = %.2f\n", a);
}
由于某些其他原因,我收到此错误并且真的不知道如何修复它们,因为我是“'functions'”的新手:
functions.c:37:17: error: passing 'float [4]' to parameter of incompatible type 'float'
print_array(a, 4);
^
functions.c:13:24: note: passing argument to parameter 'a' here
void print_array(float a, int b);
^
1 error generated.
void print_array(float a, int b);
这一行表示 print_array
的第一个参数是 float
.
float a[] = {1.555, 3, 1.645, 178};
print_array(a, 4);
此行将数组作为第一个参数传递给 print_array
。这与前面显示的第一个参数是 float
.
这正是错误告诉您的内容。
解决此问题的第一步是更改此内容:
void print_array(float a, int b);
类似于:
void print_array(float a[], int b);
或
void print_array(float *a, int b);