我必须创建一个代码来确定三个数值中最小的一个。 宏MINIMUM3应使用宏MINIMUM2(差异btwn两个数值)来确定最小数字。输入值来自用户输入。我对使用宏并不是很熟悉,而且我的教科书并没有真正帮助我展示他们如何协同工作来实现他们的功能。下面的代码是我目前正在进行的工作,但我在第3,13,16和20行遇到了错误。
#define MINIMUM2 (a,b) (a < b ? a:b)
#define MINIMUM3 (a,b,c) (MINIMUM2(a,b) c? MINIMUM (a,b) :c)
int main (void) {
int x,y,z;
int temp;
printf("Please enter three numbers\n");
scanf("%d%d%d, &x&y&z);
temp = MIN(x,y,z);
printf("The smallest number entered is:\n");
printf("%d", &temp);
getchar ();
return0;
}
答案 0 :(得分:2)
您的代码中有几个问题:
MINIMUM3
使用MINIMUM
代替MINIMUM2
MINIMUM3
的逻辑被打破scanf
MIN
代替MINUMUM3
temp
的地址传递给printf
以下是解决此问题的方法:
#define MINIMUM2(a,b) (a < b ? a:b)
#define MINIMUM3(a,b,c) (MINIMUM2(MINIMUM2(a,b),c))
int main (void) {
int x,y,z;
int temp;
printf("Please enter three numbers\n");
scanf("%d%d%d", &x, &y, &z);
temp = MINIMUM3(x, y, z);
printf("The smallest number entered is:\n");
printf("%d", temp);
getchar ();
return0;
}
您可以通过将每个参数括在括号中来改进您的宏:
#define MINIMUM2 (a,b) ((a) < (b) ? (a) : (b))
答案 1 :(得分:0)
您对MINIMUM3
宏的定义将导致语法错误。你应该尝试像
#define MINIMUM3(a, b, c) MINIMUM2(MINIMUM2(a, b), c)
或
#define MINIMUM3(a, b, c) MINIMUM2(a, MINIMUM2(b, c))
另请务必在MINIMUM3
中致电main
,而不是MIN
。