The code for negatives is incorrect. You cannot just blindly negate the result when the base m
is negative.
, but . Also, you’re not printing anything if m
is zero!
And int
s are signed by default so signed int
is noise. float
s are signed too; but here you could as well use a double
for more precision. The return value of main
should be int
.
Therefore the fixed code would be (add nonstandard clrscr
s and getch
s to your taste ;):
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m, n, i;
double p = 1.0;
printf("Enter the number and its power (exponent)\n");
scanf("%d%d",&m,&n);
if (n==0) {
printf("%d raised to %d is: %f",m,n,p);
}
else if (n > 0) {
for(i = 0; i < n; i++)
p*=m;
printf("%d raised to %d is: %f",m,n,p);
}
else { // n < 0
n = -n;
for (i = 0 ; i < n ; i++)
p*=m;
printf("%d raised to %d is: %f", m, -n, 1 / p);
}
}
2
solved Finding nth power of integer m through C program without pow()