ECS 30, Programming and Problem Solving Fall Quarter 2015
Sample Final
These are sample questions that are very similar to the ones I will ask on the midterm.
1. True or False: the value of isdigit(9) is 1.
2. True or False: In general, recursion is more efficient than iteration.
3. Multiple choice: I want to copy a string stored in an array src to another array called dest. Which of the
following statements will do this?
(a) dest = src;
(b) dest[] = src[];
(c) strcpy(dest, src);
(d) while(*dest = *src);
(e) strcmp(dest, src);
4. Multiple choice: Which of the following describes a recursive function?
(a) It is a function with no parameters.
(b) It is a function that contains loops to count something.
(c) It is a function that calls itself.
(d) It is a function that returns a value.
(e) It is a function that is called to end the program.
5. Here is a macro for computing the maximum of two numbers:
#define max(x, y) ((x) > (y) ? (x) : (y))
and here is a function:
int max(int a, int b)
{
return(a > b ? a : b);
}
In the following code fragment, give the values of a, b, c, d, and e at the end if max is the above macro, and then
if max is a function call:
a = -1;
b = 0;
c = 1;
d = max(++a, b);
e = max(c++, b);
variable value if max is macro value if max is a function
a
b
c
d
e
Version of November 30, 2015 at 7:20am Page 1 of 3
ECS 30, Programming and Problem Solving Fall Quarter 2015
6. Here is a very simple program which is designed to sum its arguments:
#include
int main(int argc, char *argv[])
{
int sum = 0;
int i;
for(i = 1; i < argc; i++)
sum += argv[i];
printf("%d\n", sum);
return(0);
}
(a) Suppose this program is invoked as
sum 1 2 3
What are the values of argc and the elements of argv? Draw a picture if that would help you indicate
what the values are. Please note I want the value of argc, argv, and each element of argv, and so forth,
either as a number or character, or as arrows in a picture (for addresses).
(b) When I ran this programs, I got 2093422869. Why does the program print the incorrect value, and how
would you fix it? Feel free to us any library functions you might find helpful. (If you cannot write the
code, for partial credit simply say what you would do.)
7. Here is a function:
int mystery(char a[])
{
register int i;
for(i = 0; a[i]; i++)
if (!isdigit(a[i]))
return(0);
return(1);
}
(a) What does the above function do? Its purpose can be stated in a succinct sentence; for partial credit, you
can describe what each line does, but for full credit, you must state its function in one very short sentence.
(b) Rewrite the function using pointers rather than an array.
8. Rewrite the following into a Linux command or commands that do not use temporary files.
tr A-Z a-z < /usr/share/dict/words > /tmp/X
grep ’ˆbananna$’ /tmp/X > /tmp/Y
wc -l /tmp/Y
9. What is the value of n after the following code executes?
Version of November 30, 2015 at 7:20am Page 2 of 3
ECS 30, Programming and Problem Solving Fall Quarter 2015
char charray[] = “A-DF123”;
int n, s = 1;
char *p;
for(n = 0, p = charray; *p; p++){
switch(*p){
case ’-’:
s = -s;
break;
case ’0’:
case ’1’:
case ’2’:
case ’3’:
case ’4’:
case ’5’:
case ’6’:
case ’7’:
case ’8’:
case ’9’:
n = n * 10 + (*p – ’0’);
break;
}
}
n = s * n;
Version of November 30, 2015 at 7:20am Page 3 of 3