August 1997
CA208: 'C' PROGRAMMING

QUESTION 4

Total Marks: 20 Marks

Click here to access other questions

SUGGESTED SOLUTIONS
Solutions and allocated marks are indicated in green.
Return to Question 4

4. (a) What are the values I and J in the following program segment? [2]

Values of I and J:
I = 6 [1]
J = 7 [1]
(b) What does the following program print? [4]

Award one mark for each of numbers in the output below. Do not deduct marks if the answers do not include the accompanying text such as val =.. one =...
val = 3 one = 2 [2]
val = 2 two =2 [2]
(c) Define implementations of the following library functions:
Implementation of strlen, strncpy, and strrev:
int strlen (char *str);
void strncpy (char *dst, char *src, int n);
void strrev (char *dst, char *src);
(i) Where strlen, returns the number of characters in the string stc. [4]
Definition of strlen:
and the following marking scheme should be used:
one mark for iterating down the string str until a null character is found (may be a while or for-loop).
one mark for incrementing src so that the loop iterates down the string.
one mark for incrementing a temporary counter that holds the number of characters encountered during traversing the string.
one mark for returning the value of the temporary counter.
no marks should be deducted for trivial syntactic errors.
[4 marks]
(ii) Where strncpy, copies at most n characters of the string stc into dst. You can assume that dst is a character string with at least n elements. [5]
Definition of strncpy:
and the following marking scheme should be used:
defining an iteration statement (may be a while or for-loop), such that the loop is terminated when either a null character is seen, [1]
or n characters have been copied. [1]
During the i th iteration of the loop, the i th character from src needs to be copies into dst. [1]
During each iteration of the loop, n needs to be decremented. [1]
After the characters from src have been copied into dst, dst has to be null terminated. [1]
no marks should be deducted for trivial syntactic errors.
[5 marks]
(iii) Where strrev, copies a reversed version of src into dst. Note: you may use strlen in your definition. [5]
Definition of strrev:
and the following marking scheme should be used:
one mark for calculating len, the length of src
one mark defining an iteration statement (may be a for or while loop), that performs len iterations.
during iteration i, two marks should be awarded for assigning dst[i] = src[len - i-1]. Only one mark should be awarded if the assignment dst[i] = src[len - i] is used.
one mark for null terminating dst.
no marks should be deducted for trivial syntactic errors.
[5 marks]