Given the following piece of code provide the results of the
Given the following piece of code, provide the results of the printfs ( ) or assignment statements as requested. The /*blank*/ comment indicates that you need to show the actual output of that printf ( ) on that line. Assume that the variables “result”, “number1”, and “number2” have addresses of 1444120, 1444128, and 1444136, respectively. The first line has been done for you. Each line is worth 3 points.
#include <stdio.h>
void integer_division (int *res, int *num1, int *num2);
int main (void) { int result = 0, number1 = 83, number2 = 17, *num1_ptr = NULL, *num2_ptr = NULL;
/*blank 1*/ printf (\"Result: %d, Number1: %d, Number2: %d\ \", result, number1, number2); /*blank 2*/ printf (\"Addresses of Result: %d, Number1: %d, Number2: %d\ \", &result, &number1, &number2);
/*blank 3*/ num1_ptr = &number1; /*blank 4*/ num2_ptr = &number2
integer_division(&result, num1_ptr, num2_ptr);
/*blank 5*/ printf (\"Addresses of Result: %d, Number1: %d, Number2: %d\ \", &result, &number1, &number2); /*blank 6*/ printf (\"Result: %d, Number1: %d, Number2: %d\ \", result, number1, number2);
return 0; }
void integer_division (int *res, int *num1, int *num2) { /*blank 7*/ printf (\"Res: %d, Num1: %d, Num2: %d\ \", res, num1, num2); *res = *num1 / *num2;
/*blank 8*/ printf (\"Result of dividing %d by %d is %d\ \", *num1, *num2, *res); }
Answers:
/*blank 1*/ Result: 0, Number1: 83, Number2: 17______________________________________________
/*blank 2*/ _____________________________________________________________________________
/*blank 3*/ _What is the actual contents of num1_ptr?___________________________________________
/*blank 4*/ _ What is the actual contents of num2_ptr?__________________________________________
/*blank 5*/ _____________________________________________________________________________
/*blank 6*/ _____________________________________________________________________________
/*blank 7*/ _____________________________________________________________________________
/*blank 8*/ _____________________________________________________________________________
Solution
#include <stdio.h>
void integer_division (int *res, int *num1, int *num2);
int main (void) {
int result = 0, number1 = 83, number2 = 17, *num1_ptr = NULL, *num2_ptr = NULL; //Initializes all these variables.
//Assume that the variables “result”, “number1”, and “number2” have addresses of 1444120, 1444128, and 1444136, respectively.
/*blank 1*/ printf (\"Result: %d, Number1: %d, Number2: %d\ \", result, number1, number2); //Prints Result: 0, Number1: 83, Number2: 17 to screen.
/*blank 2*/ printf (\"Addresses of Result: %d, Number1: %d, Number2: %d\ \", &result, &number1, &number2); //Prints Addresses of Result:1444120, Number1: 1444128, Number2: 1444136
/*blank 3*/ num1_ptr = &number1; //Assigns num1_ptr with address of number1 i.e., 1444128.
/*blank 4*/ num2_ptr = &number2; //Assigns num2_ptr with address of number2 i.e., 1444136.
integer_division(&result, num1_ptr, num2_ptr); //Calls the function: integer_division(1444120, 1444128, 1444136).
/*blank 5*/ printf (\"Addresses of Result: %d, Number1: %d, Number2: %d\ \", &result, &number1, &number2); //Prints Addresses of Result:1444120, Number1: 1444128, Number2: 1444136
/*blank 6*/ printf (\"Result: %d, Number1: %d, Number2: %d\ \", result, number1, number2); //Prints Result: 4, Number1: 83, Number2: 17 to screen.
return 0; }
void integer_division (int *res, int *num1, int *num2) { //So here the assignments are res = 1444120, num1 = 1444128, and num2 = 1444136
/*blank 7*/ printf (\"Res: %d, Num1: %d, Num2: %d\ \", res, num1, num2); //Prints: Res: 1444120, Num1: 1444128, Num2: 1444136
*res = *num1 / *num2; //Value at location 1444120 should be updated with 83 / 17 = 4.
/*blank 8*/ printf (\"Result of dividing %d by %d is %d\ \", *num1, *num2, *res); //Prints Result of dividing 83 by 17 is 4
}

