CSE 10 SUMMER 1997

MIDTERM EXAM: DISCUSSION EXAMPLES


A) C++ FUNDAMENTALS (Given code segments) 1) Are these syntactically OK (will compile)? void fa (void) { cout << "hi"; /* ho */ } void fb (void) { cout << "hi"; // ho } int main(void) { int it = 100, & r; const int BIG; const int BIGGER = 10; const int BIGGEST = it; it = BIGGER; BIGGER = it; }
B) LOOPS 1) Write a for loop to print the same output as while loop below. a) Write a do loop to print the same output as while loop below. b) What gets printed if it was "while ( i = 5 )" instead ? int i = 1; while ( i < 5 ) { ++i; cout << i << endl; }
C) DECISIONS 1) Write an if else to print same output as switch statement below. int i = 3, sum = 0 ; switch ( i ) { case 1: case 2: sum++; break; case 3: sum--; default: cout << i << endl; break; }
D) FUNCTIONS 1) What is missing? a) What gets printed now? b) Is "i" in fn() same as in main()? c) Write fn() to be an inline function. d) Write fn() to be assigned a default initializer of 1. e) Write fn() to be an overloaded function accepting a formal parameter type float. f) What makes an overloaded function? #include int main(void) { int i = 1; i = fn (i ); cout << i << endl; cout << fn(i) << endl; } int fn ( int i ) { return(i + 2); } 2) Are these legal? int fn (int i = 0, int j, int k = 2); fn (1, 2, int k = 3);
E) POINTERS 1) What gets printed? #include void swap ( int *p, int *q ); void sort ( int *pA, int *pB); int main ( void ) { int dogA = 2, dogB = 4, *p, *q; p = &dogA; q = &dogB; cout << *p * 2 << " " << 4 * *p << " " << *q - *p << endl; sort( &dogA, &dogB ); cout << dogA << " " << dogB << endl; return 0; } void swap ( int *p, int *q ) { int tmp; tmp = *p; *p = *q; *q = tmp ; } void sort ( int *pA, int *pB ) { if ( *pA < *pB ) swap (pA, pB); }
F) REFERENCE TYPES 1) What gets printed? int i = 3, &r = i; ++i; cout << i << " " << r << endl; 2) What gets printed? #include inline void fn ( int & r ) { r = 2; } int main(void) { int i = 1; fn (i); cout << i << endl; return 0; }
G) C++ ARRAYS 1)What gets printed? #include void fn(int a1[]); void swap(int & r1, int & r2); int main ( void ) { int i, qa[] = {7, 8, 9}; fn(qa); return 0; } void fn( int a1[] ) { int i, j; for ( i = 0 ; i < 3 ; ++i ) for ( j = i + 1; j < 3 ; ++j ) if ( a1[i] < a1[j] ) { swap ( a[i], a[j] ); cout << a[i] << " " << a[j] << endl; } cout << endl; } void swap(int &r1, int &r2) { int tmp; tmp = r1; r1 = r2; r2 = tmp; }
H) C++ NULTI-D ARRAYS 1) How would you handle 3-D array? (3 for loops) What gets printed? #include void fill ( int jet[][2]); void save ( int st ); int main ( void ) { int i, j, plane[3][2] = { 1, 1, 1, 2, 2, 2}; fill ( plane ); save ( plane[0][0] ); for (i = j = 0; i < 3 ; ++i ) cout << plane[i][j] << endl; return 0; } void fill ( int jet[][2] ) { int i, j; for ( i = 0 ; i < 3 ; ++i ) for ( j = 0 ; j < 2 ; ++j ) if ( i == 0 || j == 0 ) jet[i][j] *= 2; } void save ( int st ) { st = 99; }
Home || Course Outline || Course Description || Lab Hours ||FAQ || Midterm Review|| Final Review