我必须创建一个代码来确定三个数值中的最小值。 宏 MINIMUM3 应该使用宏 MINIMUM2(两个数值的差值)来确定最小的数字。输入值来自用户输入。我不太熟悉使用宏,我的教科书并没有真正帮助我展示它们如何协同工作以执行其功能的示例。下面的代码是我目前正在进行的工作,但我在第 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;
}
最佳答案
您的代码中有几个问题:
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))
关于c - 使用宏 MINIMUM3 的三个数字中最小的一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30111409/