vault backup: 2025-01-07 18:14:44
This commit is contained in:
103
education/computer engineering/ECE1400/Chapter 5 Exercises.md
Normal file
103
education/computer engineering/ECE1400/Chapter 5 Exercises.md
Normal file
@ -0,0 +1,103 @@
|
||||
> 2. The following program fragments illustrate the logical operators. Show the output produced by each, assuming that `i`, `j`, and `k` are `int` variables.
|
||||
|
||||
a. `i = 10; j = 5;`
|
||||
```c
|
||||
printf("%d", !i < j);
|
||||
|
||||
// Expected output: `1`, because `!i` evaluates to 0, and 0 is less than 5, so that expression evaluates to true, or 1.
|
||||
```
|
||||
|
||||
b. `i = 2; j = 1;`
|
||||
```c
|
||||
printf("%d", !!i + !j);
|
||||
|
||||
// Expected output: `1`, because !!2 evaluates to 1, and !j evaluates to 0
|
||||
```
|
||||
|
||||
c. `i = 5; j = 0; k = -5;`
|
||||
```c
|
||||
printf("%d", i && j || k);
|
||||
|
||||
// Expected output: `1`, because i && j should evaluate to 0, but `0 || 1` should evalulate to true.
|
||||
```
|
||||
|
||||
d. `i = 1; j = 2; k = 3;`
|
||||
```c
|
||||
printf("%d", i < j || k);
|
||||
|
||||
// Expected output: `1`
|
||||
```
|
||||
|
||||
> 4. Write a single expression whose value is either `-1`, `0`, or `1` depending on whether `i` is less than, equal to, or greater than `j`, respectively.
|
||||
|
||||
```c
|
||||
/*
|
||||
If i < j, the output should be -1.
|
||||
If i == j, the output should be zero
|
||||
If i > j, the output should be 1.
|
||||
*/
|
||||
(i > j) - (i < j)
|
||||
```
|
||||
|
||||
> 6. Is the following `if` statement legal?
|
||||
```c
|
||||
if (n == 1-10)
|
||||
printf("n is between 1 and 10\n");
|
||||
```
|
||||
|
||||
Yes the statement is *legal*, but it does not produce the intended effect. It would not produce an output when `n = 5`, because `1-10` evaluates to `-9`, and `-9 != 5`.
|
||||
|
||||
> 10. What output does the following program fragment produce? (Assume that `i` is an integer variable.)
|
||||
```c
|
||||
int i = 1;
|
||||
switch (i % 3) {
|
||||
case 0: printf("zero");
|
||||
case 1: printf("one");
|
||||
case 2: printf("two");
|
||||
}
|
||||
```
|
||||
|
||||
The program would print `onetwo` because each case is missing a `break` statement.
|
||||
|
||||
> 11. The following table shows the telephone area codes in the state of Georgia along with the largest city in each area:
|
||||
|
||||
| Area code | Major city |
|
||||
| --------- | ---------- |
|
||||
| 229 | Albany |
|
||||
| 404 | Atlanta |
|
||||
| 470 | Atlanta |
|
||||
| 478 | Macon |
|
||||
| 678 | Atlanta |
|
||||
| 706 | Columbus |
|
||||
| 762 | Columbus |
|
||||
| 770 | Atlanta |
|
||||
| 912 | Savannah |
|
||||
> Write a switch statement whose controlling expression is the variable `area_code`. If the value of `area_code` is not in the table, the `switch` statement will print the corresponding city name. Otherwise, the `switch` statement will display the message `"Area code not recognized."` Use the techniques discussed in section 5.3 to make the `switch` as simple as possible.
|
||||
```c
|
||||
int area_code;
|
||||
|
||||
switch (area_code) {
|
||||
case 404:
|
||||
case 470:
|
||||
case 678:
|
||||
case 770:
|
||||
printf("Atlanta");
|
||||
break;
|
||||
case 706:
|
||||
case 762:
|
||||
printf("Columbus");
|
||||
break;
|
||||
case 229:
|
||||
printf("Albany");
|
||||
break;
|
||||
case 478:
|
||||
printf("Macon");
|
||||
break;
|
||||
case 912:
|
||||
printf("Savannah");
|
||||
break;
|
||||
default:
|
||||
printf("Area code not recognized.");
|
||||
break;
|
||||
}
|
||||
```
|
Reference in New Issue
Block a user