K&R C Programs Exercise 4-11

Exercise 4-11. Modify getop so that it doesn’t need to use ungetch. Hint: use an internal static variable. In the original calculator, getop calls ungetch once: when it reads a non-digit character to terminate a number, it pushes that character back so the next call to getop will see it. The fix: instead of pushing …

K&R C Programs Exercise 4-10

Exercise 4-10. An alternate organization uses getline to read an entire input line; this makes getch and ungetch unnecessary. Revise the calculator to use this approach. The original calculator reads the input one character at a time via getch/ungetch. This exercise replaces that machinery with a line-buffer approach: read the whole line into a static …

K&R C Programs Exercise 4-9

Exercise 4-9. Our getch and ungetch do not handle a pushed-back EOF correctly. Decide what their properties should be if an EOF is pushed back, then implement your decision. The bug: K&R’s original implementation uses char buf[BUFSIZE]. When ungetch(EOF) is called, EOF (typically -1) is stored as char. On platforms where char is unsigned, -1 …

Strong Number in C – Check Using Digit Factorials

A strong number in C (also called a special number or Peterson number) is a number where the sum of the factorials of its individual digits equals the number itself. For 145: the digits are 1, 4, and 5. Their factorials are 1! = 1, 4! = 24, 5! = 120. The sum 1 + …

Set Union and Intersection in C — Array Program with Examples

A set is a collection of distinct elements — no duplicates, order irrelevant. The two operations every course asks you to implement in C are union (A ∪ B: every element that appears in A or B) and intersection (A ∩ B: only the elements that appear in both). This page implements them cleanly over arrays, with a shared …

K&R C Programs Exercise 4-8

Exercise 4-8. Suppose that there will never be more than one character of pushback. Modify getch and ungetch accordingly. The original K&R implementation uses an array buf[BUFSIZE] and an index bufp to support multiple pushed-back characters. If only one character of pushback is ever needed, the array becomes unnecessary. A single static int buf suffices …