[英]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.