ANSWERS TO C EXPRESSION EXERCISES 1. The statement "x = y;" replaces the value stored in variable x with the value stored in y. The statement "y = x;" replaces the value stored in y with the one in x. The "=" symbol in C means replace the variable on the left with the expression on the right. Do not confuse it with traditional mathematical equality. 2. Exchanges the values stored in x and y. 3. A. No keyword "then" in C. B. Always need parentheses around the conditional. C. Nothing wrong. This one is OK. D. Missing semicolon before "else". 4. #include <stdio.h> int main(void) { int a, b, c; scanf("%d %d %d", &a, &b, &c); if ((a == b) && (a == c)) printf("equal\n"); else printf("not equal\n"); return 0; } 5. #include <stdio.h> int main(void) { int year; scanf("%d", &year); if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))) printf("%d is a leap year\n", year); else printf("%d is NOT a leap year\n", year); return 0; } 6. 6 * 9 = 42 Trick question. #define is used to exactly substitute one sequence of characters with another. Thus, SIX * NINE is replaced by 1 + 5 * 8 + 1. Since multiplication has a higher precedence than addition, this is parsed as 1 + (5 * 8) + 1. Lesson: #define is useful to avoid "magic numbers" or "hardwired constants", but don't get carried away.