in Programming
682 views
2 votes
2 votes

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
in Programming
by
682 views

2 Answers

3 votes
3 votes
Best answer
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
selected by

4 Comments

@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
 {"

1
1
@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.
1
1
edited by
0
0
0 votes
0 votes
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.
Answer:

Related questions