繁体   English   中英

使用宏MINIMUM3的三个数中的最小值

[英]Smallest of three numbers using macro MINIMUM3

我必须创建一个确定三个数值中最小值的代码。 宏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;
}

您的代码中有几个问题:

  • 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))

您对MINIMUM3宏的定义将导致语法错误。 你应该尝试像

#define MINIMUM3(a, b, c) MINIMUM2(MINIMUM2(a, b), c)

要么

#define MINIMUM3(a, b, c) MINIMUM2(a, MINIMUM2(b, c))

还要确保在main而不是MIN调用MINIMUM3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM