Supplementary samples for exam

 

Besides questions like the ones stated in "Review questions.html" here are some other sample closed book questions:

 

What does the following program print?

 

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#include <ctype.h>

int main(void)

{

char a[8];

char *b;

char c = 'U';

strcpy(a+1, "gObLiN");

printf("1: %c\n", a[0]);

*a = 'A';

printf("2: %s\n", a);

a[3] = c;

b = &c;

printf("3: %c\n", *b);

b = &(a[3]);

toupper(a[1]);

toupper(a[2]);

printf("4: %s\n", a);

a[0] = a[1] = a[2] = a[3];

printf("5: %s\n", a);

b;

printf("6: %d\n", b a);

return EXIT_SUCCESS;

}

 

The following pseudocode algorithm was design to find all the proper divisors of n N (i.e without 1 and n):

 

read n;

if (n >1) then

      begin 

            n2:=n div 2;

            d:=1;

    while (d<=n2) do

      begin 

            if (n mod d =1) then write d; endif;

        d:=d+1;

      end;

  end

endif;

 

What must be changed to make this algorithm work?


Sample problem 1

 

Many gas stations use plastic digits on an illuminated sign to indicate prices.  When there is an insufficient quantity of a particular digit, the attendant may substitute another one upside down.

 

The digit "6" looks much like "9" upside down.  The digits "0", "1" and "8" look like themselves.  The digit "2" looks a bit like a "5" upside down (well, at least enough so that gas stations use it). 

 

Due to rapidly increasing prices, a certain gas station has used all of its available digits to display the current price.  Fortunately, this shortage of digits need not prevent the attendant from raising prices.  She can simply rearrange the digits, possibly reversing some of them as described above.

 

Your job is to compute, given the current price of gas, the next highest price that can be displayed using exactly the same digits.

 

The input consists of several lines, each containing between 2 and 30 digits (to account for future prices) and a decimal point immediately before the last digit. There are no useless leading zeroes; that is, there is a leading zero only if the price is less than 1.

You are to compute the next highest price that can be displayed using the same digits and the same format rules.  An input line containing a decimal point alone terminates the input.  If the price cannot be raised, print "The price cannot be raised."

 

Sample Input

65.2

76.7

77.7

.

Output for Sample Input

65.5

77.6

The price cannot be raised.

 


Sample Problem 2

 

The factorial function, n ! is defined thus for n a non-negative integer:

 

   0! = 1

   n ! = n * (n – 1)!   (n > 0)

 

We say that a divides b if there exists an integer k such that

 

   k × a = b

 

The input to your program consists of several lines, each containing two non-negative integers, n and m, both less than 231.  For each input line, output a line stating whether or not m divides n !, in the format shown below.

 

Sample Input

 

6 9

6 27

20 10000

20 100000

1000 1009

 

 

Output for Sample Input

 

9 divides 6!

27 does not divide 6!

10000 divides 20!

100000 does not divide 20!

1009 does not divide 1000!