721 views

What will be the output of the following C program?

#include <stdio.h>
int main()
{
int f1(int,int);
int x = 9,n = 3;
printf("%d", f1(x, n));
}

int f1(int x, int n)
{
int y = 1,i = 1;
for(i = 1;i <= n; i++)
y = y * x;
return(y);
}
1. 27
2. 729
3. 81
4. Compilation Error

x = 9, n = 3;
int f1(int x, int n)
{
int y = 1,i = 1;
for(i = 1;i <= n; i++)
y = y * x;
return(y);
}

i = 1,
y = 1, x = 9, n = 3,
y = 1*9 = 9

i = 2,
y = 9, x = 9, n = 3,
y = 9*9 = 81

i = 3,
y = 81, x = 9, n = 3,
y = 81*9 = 729

return (y) i.e. 729


@air1 I first declare the function inside the main function. Then after some code. I define that function inside the main function. I got this error: "error: a function-definition is not allowed here before '{' token
{"

@Hemant Thanks for pointing. Just checked that nested functions are not a part of the C standard. They are just supported by GCC.

You can get rid of that error by prepending the auto to the declaration.
edited by
1st time y=y*x;

y=1*9=9;

2nd time loop will run

y=y*x=9*9=81;

3rd time loop will run

and again y=y*x=81*9=729;

and next time condition will be false  because i!<=n

so y will return as o/p hence ans. is

729.