Consider the following program in C:
#include <stdio.h>
void func(int i, int j) {
if(i < j) {
int i = 0;
while (i < 10) {
j += 2;
i++;
}
}
printf("%d", i);
}
int main() {
int i = 9, j = 10;
func(i, j);
return 0;
}
The output of the program is _________. (answer in integer)
Note: Assume that the program compiles and runs successfully.
Step 1: In main, \(i = 9\) and \(j = 10\), and the call is func(i, j), so inside func the formal parameters receive \(i = 9\), \(j = 10\).
Step 2: The condition \(if (i < j)\) compares parameter i (9) with parameter j (10). Since \(9 < 10\) is true, the if-block executes.
Step 3: Inside this block, a new local variable \(i = 0\) is declared with int. This inner i is a completely separate variable that shadows the outer parameter i, but only inside this inner block.
Step 4: The loop \(while (i < 10)\) refers only to this inner i. It runs 10 times, incrementing inner i from 0 up to 10 (and adding 2 to j each time), and never touches the outer parameter i.
Step 5: When the inner block ends, the inner i goes out of scope and is discarded. The printf statement, which lies outside the if-block, then uses the outer parameter i, whose value was never changed by the loop - it is still 9.
Final Answer: The program prints 9. \[\boxed{9}\]
A schedule of three database transactions \(T_1\), \(T_2\), and \(T_3\) is shown. \(R_i(A)\) and \(W_i(A)\) denote read and write of data item A by transaction \(T_i\), \(i = 1, 2, 3\). The transaction \(T_1\) aborts at the end. Which other transaction(s) will be required to be rolled back?

In C runtime environment, which one of the following is stored in heap?
Consider the following three ANSI-C programs, P1, P2, and P3.
P1
P2
P3
#include <stdio.h>
int a=5;
int main(){
int a=7;
return(0);
}
#include <stdio.h>
int main(){
int a=5;
int a=7;
return(0);
}
#include <stdio.h>
int main(){
int a=5;
float a=7;
return(0);
}
Which one of the following statements is true?
Consider the following C statements:
char *str1 = "Hello; /* Statement S1 */
char *str2 = "Hello;"; /* Statement S2 */
int *str3 = "Hello"; /* Statement S3 */
Which of the following options is/are correct?
Consider the following ANSI-C program.
#include <stdio.h>
int main(){
int *ptr, a, b, c;
a=5; b=11; c=20;
ptr=&a; *ptr=c; ptr=&c;
a=*(&b); c=*ptr-a;
printf("%d",c);
return(0);
}
The output of this program is ____________. (answer in integer)
Note: Assume that the program compiles and runs successfully.
Consider the following ANSI-C function.
int func(int start, int end){
int length=end+1-start;
if((length<1)||(start<0)||(end<0)){ return(0); }
if(length%3==0){
return(func(start+1, end));
} else if(length%3==1){
return(1+func(start, end-1));
} else {
return(func(start+2, end));
}
}
The maximum possible value that can be returned from this function is
____________. (answer in integer)
Note: Ignore syntax errors (if any) in the function.