Department of Computer Science

University of Illinois at Urbana-Champaign

Computer Science 101: Midterm Exam II (60 minutes)

 


Name:                                                                         NetID:
 

Lab Section:                                                                Date: April 7, 2011

 


No questions will be answered during this examination.  If you do not understand a question, read it again.  If you still do not understand it, make reasonable assumptions and write them down. (Points will be deducted if unreasonable assumptions are made.)

DO NOT CHEAT: Cheating includes not only copying from another person but also allowing someone to copy from you.  Anyone who copies or allows someone to copy will receive a score of zero.  So be defensive and protect your work.

This examination contains 13 pages including this page. Check that your copy is complete, and ask for a replacement if it is not. Do all your work on these pages. For your own protection, in case pages come apart, write your NetID at the TOP of each page before beginning work.



Do not forget to sign the attendance list. If your exam is misplaced and you did not sign the attendance list then you will receive a zero score for the exam.

You may not use any electronic devices, book, notes or other references during this examination.

DO NOT WRITE IN THIS SPACE

Section

Possible Score

Deduction

Grader

1

10

 

 

2

4

 

 

3

7

 

 

4

6

 

 

5

8

 

 

6

8

 

 

7

8

 

 

8

6

 

 

9

6

 

 

10

5

 

 

11

8

 

 

12

5

 

 

13

9

 

 

14

5

 

 

15

9

 

 

16

5

 

 

17

8

 

 

18

8

 

 

Total

125

 

 

 

 

Exam Scoreà

 

A



  1.  Assume that you are in your home directory. You have the following subdirectories:

 

subdirectory:   files in it

          -------------   ------------

          source          intro.c    test.c    test.m

     mp1             find_h.m   main.m

mp2             1cs101.c   Xcs121.c  cs.c   input.dat


a) Write a single UNIX command to create another subdirectory with the name 
backup.

 

 

________mdkir  backup___________________________________________________

 

 

b) Write a single UNIX command to make backup your current directory.

 

 

__________cd  backup___________________________________________________

 

 

c) Assume that you are in your backup directory. Write a single UNIX command to copy all the files in source subdirectory to backup directory.   (Hint:  You may use the wildcard "*").

 

 

_________cd    ../source/*  ._________________________________________________

 


d) Assume that you are in your home directory. Write a single UNIX command to move all files in the 
mp2 directory that have an extension (suffix) of  .c into the source directory.

  

  ____________mv  mp2/*.c  source_____________________________________________

 

 

 

 

 

 

 

 

 

  1. Fill in the blank below to compile your C program found in the file named autosort.c.  You want to be able to run your program by typing the command autosort at the Unix prompt (i.e.  not using a.out). The program autosort.c is saved in your current working directory. Your code does not use any functions from the math library.

 

 

Unix Prompt> _____gcc  autosort.c  -o autosort_____________

 

 

 

 

 

  1. Fill in the blanks with the corresponding letter to match the following UNIX commands with the descriptions of what they do.

 

Unix commands:

 

a)      cp

 

b)      mv

 

c)      cd

 

d)      ls

 

e)      more

 

f)        rm

 

g)      mkdir

 

 

 

Descriptions:

 

1.      display the contents of a directory               _______d__________

 

2.      make a new directory                                    _______g__________

 

3.      copy a file or files                                          _______a__________

 

4.      rename or move a file or directory                _______b__________

 

5.      delete a file or files                                        _______f__________

 

6.      display the contents of a file                         ________e_________

 

7.      change the current directory                         _________c________

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. The following C program compiles and runs without errors. Write the output produced by this program.

 

     #include <stdio.h>

 

int changeVariables(int x, int y)

{

       y=x;

       return y;

}   

 

void main(void)

{

       int x = 4;

       int y = 1;

       y=changeVariables(y,x);

       printf("y = %i \n", y);

}

 

 y = _________1________________

 

 

5.      The following C program compiles and runs without errors. Write the output of this program.

 

#include <stdio.h>

 

int func1(int z)

{

 z  = 2*z;

      return  z;

}

 

int func2(int x)

{

      x  = x+4;

      return  x;

}

 

 

void main(void)

{

      int x = 2;

      int y = 3;

      int r = 5;

 y = func1(func2(r));

      r = func2(x);

      printf("  x = %i  , y = %i \n", x, y);

}

 

 

x = _________2________________ y = ______18___________________

6.      The following C program compiles and runs without errors. Write the output of this program.

 

#include <stdio.h>

 

char  build1(char z[])

{

  z[0] = 'L';

}

 

char  build2(char m[])

{

  m[7] = 'n';

}

 

void main(void)

{

  char x[64] = " ed";

  char y[64]="Zeppeli ";

  build1(x);

  build2(y);

  printf ("%s %s\n", x,y);

}

 

 

____Led Zeppelin____________________________________________

 

 

7.      The following C program compiles and runs without errors. Write the output of this program.

 

#include <stdio.h>

 

int fun(int x)

{

  if(x%3)

    return x;

  else

    return x%3;

}

 

void main(void)

{

  printf("%i ",fun(4));

  printf("%i ",fun(3));

}

 

 

 

__________4_________________ ______________0________________

 

 

 

8.      Circle each of the following loops that are infinite. There may be more than one correct answer.

 

a)

int a=5, b=6, x=0;

while (b>a)

  a = x+rand()%2;

  b = rand()%3;

}

 

b)

int a, b=6;

for(a=5; ; --b)

  if(b < a)

    break;

  ++b;

}

 


c)

int a=5, b=6;

     do

  if(b < a)

    break;

  ++b;

}while(a > b);

 




9.      Write the final value of the variable named a after running this code fragment.

 

int i, k, a=1;

 

for (i=1; i<=6; i=i+1)

  for (k=i; k<3; k=k+1)

       a=a*2;

          

 

 

___________8_________________

 

 

 

10.  What is the smallest integer, replacing the symbol X below, in the “for” loop so that the “while” and “for” loops (Program 1 and Program 2 shown below) produce the same final value for the variable named output ?

 

/* Program 1 using a while loop */                   /* Program  2 using a for loop */

 

int i = 12, output=1;         int k, output = -1;

 

while( i >= 5)               for( k=12; k <= X ; k++)

{                            {

  output++;                   output=output+2;

  i=i-2;                      }

}        

 

 

 

___________14_________________

 

 

 

 

 

 

 

 

 

 



11.  The following program compiles and runs without errors. Write the output of this program.

#include <stdio.h>

 

void main(void)

{

     int A[] = {1 , 3 , 5, 7};

int i;

 

for(i=0 ; i<3 ; ++i)

    printf("  %i  ", A[i++]);

  }

 

 

 

___________1______________5________________________________

 

12.   The following program compiles and runs without errors. Circle the output this program   

   produces. There is only one correct answer.

 
#include <stdio.h>

#define A 7

 

void main(void)

{

  int i, c;

  int a[A] = { 1, 2, 3, 4, 5, 6, 7};

 

  for(i=0; i < A/2; i++)

  {

    c = a[i];

    a[i] = a[ A- (i+1)]; 

    a[A-(i+1)] = c;

  }

 

  for(i=0; i <A; i++)

    printf("  %i   ", a[i]);

 

}

 

 

a)      1    2     3     4      5     6     7

 

 

b)      7    6     5     4      3     2     1

 

 

c)      1    2     3     4      1     2     3

 

 

d)      5    6     7     4      5     6     7

 

 

e)      7    7     7     7      7     7     7

 

 

 

 

 

 

 

 

 

 

 

 

13.  The following program compiles and runs without errors. Write the output of this program.

 

      #include <stdio.h>

      #include <string.h>

 

      void main(void) 

      {

        char band[32] = "GreenDay";

        char member[32] = {'B','I','L','\0','I','E','\0'};

      

        printf("%s \n", member);

        printf("%c \n", member[0]);

        strcpy(member, band);

        printf("%s \n", band);

   }

 


___________BIL____________________________


___________B____________________________


____________GreenDay___________________________

 

 

 

 

 

 

 

 

 

 

 

 

14.  The following program compiles and runs without errors. Circle the count of the number of times        the letter J is printed. There is only one correct answer.

 

#include<stdio.h>

 

void main(void)
{
int i,j;

for(i=3; i>0; i--)
  {
    j=0;
    while(j<=i)
    {
      printf("J");
      j++;
         }
  }
}



 

a)      4

 

 

b)      5

 

 

c)      6

 

 

d)      7

 

 

e)      8

 

 

f)        9

 

 

 

 

 

 

 

 

 

 

 

15.  The following C program compiles and runs without errors. Write the output of this program.

#include <stdio.h>

void main(void)
{

   int x, a = 3, b = 2, c = 1 ;
   if(a > 1)
     c = c + b * a;
   printf("%i ", c);
   if(( b < 4) && (c <= (a + 2)))
      printf("X ");

   x = 0;
   if(x == -1)
     printf("T ");

   else if(x != 0)
           printf("U ");
        else
           printf("Y ");

   if(x == -1)
     printf("Z ");

        if(x == 0)
          printf("W ");

 }

 

_____________7    Y    W__________________________________________

 

16.  Circle the correct way to print out the value of the integer variable named B by calling the printf  function. There is only one correct answer.

 a)  printf(B);

 

b)  printf("%i",&B);

 

c)  printf("%i",B); 


d)
 printf("B");

 

17.  The following C program compiles and runs without errors. Write the output of this program.

#include <stdio.h>

 void main(void)
 { 
   int i = 8;

   if((i/3 == 0) || (i/3 == 2))
   {
       switch(i/2)
       {
         case 3:  printf("L ");
         case 2:  printf("M ");                 
         case 1:  printf("N ");            
         default: printf("P " );
       }

       if(i == 2)
         printf("Q " );
       else
         printf("R " );
   }
   else
   {
       switch(i/2)
       {
         case 3:  printf("U ");
         case 2:  printf("V ");                 
         case 1:  printf("W ");            
         default: printf("X " );
       }

       if(i == 2)
         printf("Q " );
       else
         printf("R " );
   }

 }

  

      ________________P    R_________________________________________

 

 

 

 

18.  The following C program compiles and runs without errors. Write the output of this program.

            #include <stdio.h>

 void main(void)

 {
       int no = 5, v = - 4;
       int a = 3;

       if((a >= 5) && (a <= 2))
          printf("A ");
       if(a != 8)
          printf("B ");
       if((a <= 1) || (a >= 5))
         printf("C ");
       else
         printf("D ");
      
       switch ( no-1 )
       {
          case 1: v = v * 2;
          case 2: v = v - 1;
                  break;
          case 3: v = v + 10;
          default: printf("%i " , no); 
        }

    printf("%i \n", v);
      }

 

 


      ________________B    D    5    -4________________________________