簡體   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