我有一个计算机科学II课程的问题。想知道你们是否会帮助我。我从事计算机科学工作已经有两年了,所以如果事情变得容易的话,就不要对我这么辛苦。
无论如何,这是我的代码;
#include<stdio.h>
#include <stdarg.h>
/*The purpose of this program is to be able to enter 4 numbers
and let the program tell you which number the the largest, which
number is the smallest, and then multiply the first 3 numbers together
and then divides by the 4th one. once doe it will print the results.
The main goal is to help you understand pointers*/
int main()
{
int a, b, c, d = 0;
int result;
printf("Enter the 4 numbers"); //instructions
scanf("%d%d%d%d", &a, &b, &c, &d); //collects 4 numbers
result = (a*b*c)/d;
max(int *a, int *b, int *c, int *d, int *result); //prints the max of the 4 numbers
min(int *a, int *b, int *c, int *d, int *result); //prints the min of the 4 numbers
return 0;
}
void max(int *a, int *b, int *c, int *d, int *result)
{
if(a > b && a > c && a > d)
{
printf("The max is %d. ", a);
}
if(b > a && b > c && b > d)
{
printf("The max is %d. ", b);
}
if(c > a && c > b && c > d)
{
printf("The max is %d. ", c);
}
if(d > a && d > b && d > c)
{
printf("The max is %d. ", d);
}
}
void min (int *a, int *b, int *c, int *d, int *result)
{
if(a < b && a < c && a < d)
{
printf("The min is %d. ", a);
}
if(b < a && b < c && b < d)
{
printf("The min is %d. ", b);
}
if(c < a && c < b && c < d)
{
printf("The min is %d. ", c);
}
if(d < a && d < b && d < c)
{
printf("The min is %d. ", d);
}
}
void mul (int *a, int *b, int *c, int *d, int *result)
{
printf("(a * b * c) / d = %d\n", result);
}
以下是我得到的错误;
lab1.c: In function 'main':
lab1.c:20:6: error: expected expression before 'int'
lab1.c:21:6: error: expected expression before 'int'
lab1.c: At top level:
lab1.c:26:6: warning: conflicting types for 'max' [enabled by default]
lab1.c:20:2: note: previous implicit declaration of 'max' was here
lab1.c:51:6: warning: conflicting types for 'min' [enabled by default]
lab1.c:21:2: note: previous implicit declaration of 'min' was here
任何帮助!?
答案 0 :(得分:1)
max(int *a, int *b, int *c, int *d, int *result); //prints the max of the 4 numbers
min(int *a, int *b, int *c, int *d, int *result); //prints the min of the 4
那些是函数的前向声明,而不是函数调用,但是你忘记了返回类型,因此错误。要调用您的函数,请使用:
max(&a, &b, &c, &d, &result); //prints the max of the 4 numbers
min(&a, &b, &c, &d, &result); //prints the min of the 4
接下来,你 需要转发声明这些函数的位置(main):
void max(int *a, int *b, int *c, int *d, int *result);
void min (int *a, int *b, int *c, int *d, int *result);
int main() {
/* ... */
}
最后,您的两个函数都没有设置result
变量。
答案 1 :(得分:1)
你正在调用你的功能
max(int *a, int *b, int *c, int *d, int *result);
将其更改为
max(&a, &b, &c, &d, &e);
min
函数相同。
答案 2 :(得分:0)
为什么在函数调用中使用数据类型?
你应该这样做: -
max(&a, &b, &c, &d, &result) ;
和min一样
调用函数时,只提供不带数据类型的参数,或者你可以这样做: -
int *pa = &a ;
int *pb = &b ;
int *pc = &c ;
int *pd = &d ;
int *presult = &result ;
max(pa, pb, pc, pd, presult) ;
// similarly for min.
答案 3 :(得分:0)
除了已经给出的答案:
int a, b, c, d = 0;
可能没有做你认为的那样。尝试:
int a=0,b=0,c=0,d=0;
另外,IDK如果你这样做是因为需要赋值,但传递int指针是完全没有意义的。它们不仅仅是将值复制到函数中。
另外,将结果引用传递给这些函数是没有意义的。只需返回函数的结果。
答案 4 :(得分:0)
上面给出的答案是正确的,但作为建议而不是传递指向函数的指针,传输变量并在所需函数中使用变量将更容易。
虽然没关系,但你可能也想让结果成为一个浮点值,就像除法一样,不能保证你总是得到完美的整数值(只是一个小建议)。